private static void updateMapField(
      Types.NestedField newField,
      Types.NestedField oldField,
      UpdateSchema us,
      String fieldPrefix,
      Collection<Add> adds) {
    Types.MapType newType = newField.type().asMapType();
    Types.MapType oldType = oldField.type().asMapType();

    List<Types.NestedField> newFields = newType.fields();
    List<Types.NestedField> oldFields = oldType.fields();

    String crtPrefix = getFullName(fieldPrefix, oldField.name());
    for (int i = 0; i < newFields.size(); i++) {
      Types.NestedField newF = newFields.get(i);
      Types.NestedField oldF = oldFields.get(i);
      Type t = newF.type();
      // just support same type update
      if (t.isPrimitiveType()) {
        syncField(newF, oldF, us, crtPrefix, adds);
      } else {
        updateNestedField(
            newF.type().asNestedType(), oldF.type().asNestedType(), us, crtPrefix, adds);
      }
    }
  }
Apply the pending changes to the original schema and returns the result.

<p>This does not result in a permanent update.

@return the result Schema when all pending updates are applied
amoro-format-iceberg/src/main/java/org/apache/amoro/op/KeyedSchemaUpdate.java