public void visitFieldExpr(final FieldExpr expr) {
		expr.visitChildren(this);
		genPostponed(expr);

		if (expr.isDef()) {

			boolean UC = false; // Do we need an UC?

			// Look at the FieldExpr's object for a UCExpr
			Node check = expr.object();
			while (check instanceof CheckExpr) {
				if (check instanceof UCExpr) {
					UC = true;
					break;
				}

				final CheckExpr c = (CheckExpr) check;
				check = c.expr();
			}

			// Do we need to perform the write barrier?
			if (!UC && CodeGenerator.USE_PERSISTENT) {
				/*
				 * System.out.println("Emitting a putfield_nowb in " +
				 * this.method.declaringClass().classInfo().name() + "." +
				 * this.method.name());
				 */
				nowb = true;

				// I commented out the next line because it generated a compiler
				// error, and I figured it was just about some unimportant
				// persistance stuff --Tom
				// method.addInstruction(opcx_putfield_nowb, expr.field());

			} else {
				method.addInstruction(Opcode.opcx_putfield, expr.field());

			}

			stackHeight -= 1; // object
			stackHeight -= expr.type().stackHeight();

		} else {
			method.addInstruction(Opcode.opcx_getfield, expr.field());
			stackHeight -= 1; // pop object
			stackHeight += expr.type().stackHeight();
		}
	}