public static List<Pair<Integer, ValueReader<?>>> buildReadPlan(
      Types.StructType expected,
      Schema record,
      List<ValueReader<?>> fieldReaders,
      Map<Integer, ?> idToConstant) {
    return buildReadPlan(expected, record, fieldReaders, idToConstant, (type, value) -> value);
  }
Builds a read plan for record classes that use planned reads instead of a ResolvingDecoder.

@param expected expected StructType
@param record Avro record schema
@param fieldReaders list of readers for each field in the Avro record schema
@param idToConstant a map of field ID to constants values
@return a read plan that is a list of (position, reader) pairs
iceberg/patched-iceberg-core/src/main/java/org/apache/iceberg/avro/ValueReaders.java