@Override
          protected InstanceCache<Object, GenericEnumSymbol> makeInstance(final Schema schema,
                     Set<Schema> seenSchemas) {
            return new InstanceCache<Object, GenericEnumSymbol>() {
              @Override
              protected GenericEnumSymbol makeInstance(Object seed,
                             Set<Object> seenSchemas) {
                return new GenericData.EnumSymbol(schema, seed.toString());
              }
            };
          }
private cache to avoid lots of EnumSymbol creation while serializing.
 Two levels because the enum symbol is specific to a schema.
 Object because we want to avoid the overhead of repeated toString calls while maintaining compatibility.
 Provided there are few enum types per record, and few symbols per enum, memory use should be moderate.
 eg 20 types with 50 symbols each as length-10 Strings should be on the order of 100KB per AvroSerializer.
serde/src/java/org/apache/hadoop/hive/serde2/avro/AvroSerializer.java