private static void populateMapping(
        ColumnIdentity identity,
        ImmutableMap.Builder<Integer, Map<String, Integer>> fieldNameToIdMappingForTableColumns) {
      List<ColumnIdentity> children = identity.getChildren();
      fieldNameToIdMappingForTableColumns.put(
          identity.getId(),
          children.stream()
              // Lower casing is required here because ORC StructColumnReader does the same before
              // mapping
              .collect(
                  toImmutableMap(
                      child -> child.getName().toLowerCase(ENGLISH), ColumnIdentity::getId)));

      for (ColumnIdentity child : children) {
        populateMapping(child, fieldNameToIdMappingForTableColumns);
      }
    }
Gets the index based dereference chain to get from the readColumnHandle to the
expectedColumnHandle
amoro-format-mixed/amoro-mixed-trino/src/main/java/org/apache/amoro/trino/unkeyed/IcebergPageSourceProvider.java