public void dumpExpression(TabbedPrintWriter writer)
			throws java.io.IOException {
		Type arrType = subExpressions[0].getType().getHint();
		if (arrType instanceof ArrayType) {
			Type elemType = ((ArrayType) arrType).getElementType();
			if (!elemType.isOfType(getType())) {
				/* We need an explicit widening cast */
				writer.print("(");
				writer.startOp(writer.EXPL_PAREN, 1);
				writer.print("(");
				writer.printType(Type.tArray(getType().getHint()));
				writer.print(") ");
				writer.breakOp();
				subExpressions[0].dumpExpression(writer, 700);
				writer.print(")");
				writer.breakOp();
				writer.print("[");
				subExpressions[1].dumpExpression(writer, 0);
				writer.print("]");
				return;
			}
		}
		super.dumpExpression(writer);
	}