@Override
 public void visitEnum(final String name, final String desc, final String value) {
   EnumValueDescriptor valueDescriptor = createValue(EnumValueDescriptor.class, name);
   TypeDescriptor typeDescriptor = visitorHelper.getTypeDescriptor(visitorHelper.getType(desc));
   FieldDescriptor fieldDescriptor =
       visitorHelper.getFieldDescriptor(
           typeDescriptor, visitorHelper.getFieldSignature(value, desc));
   valueDescriptor.setType(visitorHelper.getTypeDescriptor(Enum.class.getName()));
   valueDescriptor.setValue(fieldDescriptor);
   addValue(name, valueDescriptor);
 }
 @Override
 public void visit(final String name, final Object value) {
   if (value instanceof Type) {
     String type = visitorHelper.getType((Type) value);
     ClassValueDescriptor valueDescriptor = createValue(ClassValueDescriptor.class, name);
     valueDescriptor.setValue(visitorHelper.getTypeDescriptor(type));
     addValue(name, valueDescriptor);
   } else {
     PrimitiveValueDescriptor valueDescriptor = createValue(PrimitiveValueDescriptor.class, name);
     TypeDescriptor typeDescriptor = visitorHelper.getTypeDescriptor(value.getClass().getName());
     valueDescriptor.setType(typeDescriptor);
     valueDescriptor.setValue(value);
     addValue(name, valueDescriptor);
   }
 }
 @Override
 public AnnotationVisitor visitAnnotation(final String name, final String desc) {
   AnnotationValueDescriptor valueDescriptor = createValue(AnnotationValueDescriptor.class, name);
   valueDescriptor.setType(visitorHelper.getTypeDescriptor(visitorHelper.getType(desc)));
   addValue(name, valueDescriptor);
   return new AnnotationVisitor(valueDescriptor, visitorHelper);
 }