public void visitArrayRefExpr(final ArrayRefExpr expr) {
		// a[i]
		// [a[i]] <= [element type of a]

		final Expr array = expr.array();
		if (!expr.isDef()) {
			if (!array.type().equals(TypeInference.UNDEF)
					&& !array.type().equals(Type.OBJECT)
					&& !array.type().equals(Type.SERIALIZABLE)
					&& !array.type().equals(Type.CLONEABLE)
					&& !array.type().isNull()) {

				Assert.isTrue(array.type().isArray(), array + " in " + expr
						+ " (" + array.type() + ") is not an array");
				start(expr, expr.array().type().elementType());
			}
		}
	}