public void parseMultiDelimit(byte[] rawRow, byte[] fieldDelimit) {
    if (rawRow == null || fieldDelimit == null) {
      return;
    }
    if (fields == null) {
      List<? extends StructField> fieldRefs = oi.getAllStructFieldRefs();
      fields = new LazyObject[fieldRefs.size()];
      for (int i = 0; i < fields.length; i++) {
        fields[i] = LazyFactory.createLazyObject(fieldRefs.get(i).getFieldObjectInspector());
      }
      fieldInited = new boolean[fields.length];
      startPosition = new int[fields.length + 1];
    }
    // the indexes of the delimiters
    int[] delimitIndexes = findIndexes(rawRow, fieldDelimit);
    int diff = fieldDelimit.length - MultiDelimitSerDe.REPLACEMENT_DELIM_LENGTH;
    // first field always starts from 0, even when missing
    startPosition[0] = 0;
    for (int i = 1; i <= fields.length; i++) {
      if (delimitIndexes[i - 1] != -1) {
        int start = delimitIndexes[i - 1] + fieldDelimit.length;
        startPosition[i] = start - i * diff;
      } else {
        startPosition[i] = length + 1;
      }
    }
    Arrays.fill(fieldInited, false);
    parsed = true;
  }
Get the values of the fields as an ArrayList.

@return The values of the fields as an ArrayList.
serde/src/java/org/apache/hadoop/hive/serde2/lazy/LazyStruct.java