public FieldVisitor visitField(final int access, final String name,
			final String desc, final String signature, final Object value) {
		buf.setLength(0);
		buf.append('\n');
		if ((access & Opcodes.ACC_DEPRECATED) != 0) {
			buf.append(tab).append("// DEPRECATED\n");
		}
		buf.append(tab).append("// access flags 0x")
				.append(Integer.toHexString(access).toUpperCase()).append('\n');
		if (signature != null) {
			buf.append(tab);
			appendDescriptor(FIELD_SIGNATURE, signature);

			TraceSignatureVisitor sv = new TraceSignatureVisitor(0);
			SignatureReader r = new SignatureReader(signature);
			r.acceptType(sv);
			buf.append(tab).append("// declaration: ")
					.append(sv.getDeclaration()).append('\n');
		}

		buf.append(tab);
		appendAccess(access);

		appendDescriptor(FIELD_DESCRIPTOR, desc);
		buf.append(' ').append(name);
		if (value != null) {
			buf.append(" = ");
			if (value instanceof String) {
				buf.append('\"').append(value).append('\"');
			} else {
				buf.append(value);
			}
		}

		buf.append('\n');
		text.add(buf.toString());

		TraceFieldVisitor tav = createTraceFieldVisitor();
		text.add(tav.getText());

		if (cv != null) {
			tav.fv = cv.visitField(access, name, desc, signature, value);
		}

		return tav;
	}