public boolean readField(int fieldIndex) throws IOException {

    Preconditions.checkState(currentLevel == 0);

    if (!topLevelParsed) {
      topLevelParse();
      topLevelParsed = true;
    }

    // Top level.
    currentTopLevelFieldIndex = fieldIndex;

    currentFieldStart = startPositions[fieldIndex];
    currentFieldLength = startPositions[fieldIndex + 1] - startPositions[fieldIndex] - 1;
    currentEscapeCount = (isEscaped ? escapeCounts[fieldIndex] : 0);
 
    return doReadField(fields[fieldIndex]);
  }
Parse the byte[] and fill each field.

This is an adapted version of the parse method in the LazyStruct class.
They should parse things the same way.
serde/src/java/org/apache/hadoop/hive/serde2/lazy/fast/LazySimpleDeserializeRead.java