public ClassTemplateSpec generate(DataSchema schema, DataSchemaLocation location)
  {
    pushCurrentLocation(location);
    final ClassTemplateSpec result = processSchema(schema, null, null);
    popCurrentLocation();
    return result;
  }
@Test(dataProvider = "customTypeDataForRecord")
  public void testCustomInfoForRecordFields(final List<DataSchema> customTypedSchemas)
  {
    final List<RecordDataSchema.Field> fields = customTypedSchemas.stream()
        .map(RecordDataSchema.Field::new)
        .peek(field -> field.setName("field_" + _uniqueNumberGenerator.getAndIncrement(), null))
        .collect(Collectors.toList());
    final RecordDataSchema record = new RecordDataSchema(new Name(INPUT_SCHEMA_NAME), RecordDataSchema.RecordType.RECORD);
    record.setFields(fields, null);

    final TemplateSpecGenerator generator = new TemplateSpecGenerator(_resolver);
    final RecordTemplateSpec spec = (RecordTemplateSpec) generator.generate(record, _location);

    for (int i = 0; i < customTypedSchemas.size(); ++i)
    {
      Assert.assertNotNull(spec.getFields().get(i).getCustomInfo());
      Assert.assertEquals(spec.getFields().get(i).getCustomInfo().getCustomClass().getClassName(),
                          CustomTypeUtil.getJavaCustomTypeClassNameFromSchema((TyperefDataSchema) customTypedSchemas.get(i)));
    }
  }