public void visitFieldExpr(final FieldExpr expr) {
		// NullPointerException -- handled by ZeroCheckExpr
		/*
		 * sideEffects |= THROW;
		 */

		if (expr.isDef()) {
			sideEffects |= SideEffectChecker.STORE;
		}

		final MemberRef field = expr.field();

		try {
			final FieldEditor e = context.editField(field);

			if (!e.isFinal()) {
				sideEffects |= SideEffectChecker.ALIAS;
			}

			if (e.isVolatile()) {
				sideEffects |= SideEffectChecker.VOLATILE;
			}

			context.release(e.fieldInfo());
		} catch (final NoSuchFieldException e) {
			// A field wasn't found. Silently assume it's not final and
			// is volatile.
			sideEffects |= SideEffectChecker.ALIAS;
			sideEffects |= SideEffectChecker.VOLATILE;
		}

		expr.visitChildren(this);
	}