@Override
  public String format(final Schema schema) {
    final String converted = SchemaWalker.visit(schema, new Converter()) + typePostFix(schema);

    return options.contains(Option.AS_COLUMN_LIST)
        ? stripTopLevelStruct(converted)
        : converted;
  }
@Test
  public void shouldEscapeReservedWords() {
    // Given:
    final Schema structSchema = SchemaBuilder.struct()
        .field("COL1", Schema.STRING_SCHEMA)
        .field("COL2", SchemaBuilder
            .struct()
            .field("COL3", Schema.STRING_SCHEMA)
            .build())
        .build();

    final Predicate<String> escaper = name -> !name.equalsIgnoreCase("COL1");

    final SqlSchemaFormatter formatter = new SqlSchemaFormatter(escaper);

    // Then:
    assertThat(formatter.format(structSchema), is(
        "STRUCT<"
            + "COL1 VARCHAR, "
            + "`COL2` STRUCT<`COL3` VARCHAR>"
            + ">"));
  }