@Override
  public <T> @NonNull Schema schemaFor(TypeDescriptor<T> typeDescriptor) {
    return schemaFor(typeDescriptor.getRawType());
  }
@Test
  public void testMainStructSchemaWithContainerTypedefRegistered() {
    final Schema schema = customSchemaProvider.schemaFor(TypeDescriptor.of(TestThriftStruct.class));
    assertNotNull(schema);
    assertEquals(TypeName.BOOLEAN, schema.getField("testBool").getType().getTypeName());
    assertEquals(TypeName.BYTE, schema.getField("testByte").getType().getTypeName());
    assertEquals(TypeName.INT16, schema.getField("testShort").getType().getTypeName());
    assertEquals(TypeName.INT32, schema.getField("testInt").getType().getTypeName());
    assertEquals(TypeName.INT64, schema.getField("testLong").getType().getTypeName());
    assertEquals(TypeName.DOUBLE, schema.getField("testDouble").getType().getTypeName());
    assertEquals(TypeName.BYTES, schema.getField("testBinary").getType().getTypeName());
    assertEquals(TypeName.MAP, schema.getField("stringIntMap").getType().getTypeName());
    assertEquals(TypeName.LOGICAL_TYPE, schema.getField("testEnum").getType().getTypeName());
    assertEquals(
        EnumerationType.IDENTIFIER,
        schema.getField("testEnum").getType().getLogicalType().getIdentifier());
    assertEquals(TypeName.ARRAY, schema.getField("testList").getType().getTypeName());
    assertEquals(TypeName.ROW, schema.getField("testNested").getType().getTypeName());
    assertEquals(
        TypeName.ITERABLE, schema.getField("testStringSetTypedef").getType().getTypeName());
  }