@Override
  public void finishComplexVariableFieldsType() {
    Preconditions.checkState(currentLevel > 0);

    final ComplexTypeHelper complexTypeHelper = currentComplexTypeHelpers[currentLevel - 1];
    final Field complexField = complexTypeHelper.complexField;
    switch (complexField.complexCategory) {
    case LIST:
    case MAP:
      throw new Error("Complex category " + complexField.complexCategory + " is not variable fields type");
    case STRUCT:
    case UNION:
      popComplexType();
      break;
    default:
      throw new Error("Unexpected category " + complexField.complexCategory);
    }
  }
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