}
}
@Override
public FieldVisitor visitField(final int access, final String name, final String desc, final String signature, final Object value) {
final FieldDescriptor fieldDescriptor = visitorHelper.getFieldDescriptor(typeDescriptor, SignatureHelper.getFieldSignature(name, desc));
typeDescriptor.addDeclaredField(fieldDescriptor);
fieldDescriptor.setName(name);
fieldDescriptor.setVolatile(hasFlag(access, Opcodes.ACC_VOLATILE));
fieldDescriptor.setTransient(hasFlag(access, Opcodes.ACC_TRANSIENT));
setModifiers(access, fieldDescriptor);
if (signature == null) {
TypeDescriptor type = visitorHelper.getTypeDescriptor(SignatureHelper.getType((desc)));
fieldDescriptor.setType(type);
} else {
new SignatureReader(signature).accept(new AbstractTypeSignatureVisitor<FieldDescriptor>(fieldDescriptor, visitorHelper) {
@Override
public SignatureVisitor visitArrayType() {
return new DependentTypeSignatureVisitor(fieldDescriptor, visitorHelper);
}
@Override
public SignatureVisitor visitTypeArgument(char wildcard) {
return new DependentTypeSignatureVisitor(fieldDescriptor, visitorHelper);
}
@Override
public SignatureVisitor visitSuperclass() {
return this;
}
@Override
public void visitEnd(TypeDescriptor resolvedTypeDescriptor) {
fieldDescriptor.setType(resolvedTypeDescriptor);
}
});
}
if (value instanceof org.objectweb.asm.Type) {
visitorHelper.addDependency(fieldDescriptor, SignatureHelper.getType((org.objectweb.asm.Type) value));