@Override
    public ValueReader<?> record(
        Pair<Integer, Type> partner, Schema record, List<ValueReader<?>> fieldResults) {
      if (partner == null) {
        return ValueReaders.skipStruct(fieldResults);
      }

      Types.StructType expected = partner.second().asStructType();
      List<Pair<Integer, ValueReader<?>>> readPlan =
          ValueReaders.buildReadPlan(expected, record, fieldResults, idToConstant);

      return structReader(readPlan, partner.first(), expected);
    }
A reader that produces Iceberg's internal in-memory object model.

<p>Iceberg's internal in-memory object model produces the types defined in {@link
Type.TypeID#javaClass()}.

@param <T> Java type returned by the reader
iceberg/patched-iceberg-core/src/main/java/org/apache/iceberg/avro/InternalReader.java