private static Optional<Types.NestedField> filterField(
      IcebergColumnHandle requestedSchema, List<Types.NestedField> fields) {
    for (Types.NestedField nestedField : fields) {
      if (nestedField.fieldId() == requestedSchema.getId()) {
        return Optional.of(nestedField);
      }
      if (nestedField.type().isStructType()) {
        Optional<Types.NestedField> optional =
            filterField(requestedSchema, nestedField.type().asStructType().fields());
        if (optional.isPresent()) {
          return optional;
        }
      }
    }
    return Optional.of(
        Types.NestedField.optional(
            requestedSchema.getId(),
            requestedSchema.getName(),
            toIcebergType(requestedSchema.getType())));
  }
KeyedDeleteFilter is used to do MOR for Keyed Table
amoro-format-mixed/amoro-mixed-trino/src/main/java/org/apache/amoro/trino/keyed/KeyedDeleteFilter.java