private ValueReader<?> structReader(
        List<Pair<Integer, ValueReader<?>>> readPlan, int fieldId, Types.StructType struct) {

      Class<? extends StructLike> structClass = typeMap.get(fieldId);
      if (structClass != null) {
        return InternalReaders.struct(struct, structClass, readPlan);
      } else {
        return InternalReaders.struct(struct, readPlan);
      }
    }
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