@Override public void visit(String name, Object value) { if (name != null) { throw new IllegalStateException(); } if (result == null) { result = proxies.createAnnotationValue(value); } else { if (value instanceof Type) { Type type = (Type) value; BinaryTypeSignature signature; if (type.getSort() == Type.OBJECT) { String typeName = type.getInternalName(); signature = BinarySignatures.createObjectTypeSignature(typeName); } else { String typeName = type.getDescriptor(); signature = BinarySignatures.createTypeSignature(typeName); } ((InternalEList<JvmTypeReference>) ((JvmTypeAnnotationValue) result).getValues()).addUnique(proxies.createTypeReference(signature, null)); } else { @SuppressWarnings("unchecked") InternalEList<Object> list = (InternalEList<Object>) result.eGet(result.eClass().getEStructuralFeature("values")); list.addUnique(value); } } }