@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 shouldFormatStruct() {
    // Given:
    final Schema structSchema = SchemaBuilder.struct()
        .field("COL1", Schema.STRING_SCHEMA)
        .field("COL4", SchemaBuilder
            .array(Schema.FLOAT64_SCHEMA)
            .build())
        .field("COL5", SchemaBuilder
            .map(Schema.STRING_SCHEMA, Schema.FLOAT64_SCHEMA)
            .build())
        .build();

    // Then:
    assertThat(DEFAULT.format(structSchema), is(
        "STRUCT<"
            + "COL1 VARCHAR, "
            + "COL4 ARRAY<DOUBLE>, "
            + "COL5 MAP<VARCHAR, DOUBLE>"
            + ">"));

    assertThat(STRICT.format(structSchema), is(
        "STRUCT<"
            + "COL1 VARCHAR NOT NULL, "
            + "COL4 ARRAY<DOUBLE NOT NULL> NOT NULL, "
            + "COL5 MAP<VARCHAR NOT NULL, DOUBLE NOT NULL> NOT NULL"
            + "> NOT NULL"));
  }