if (ret!=null) return ret;
final Int child = intExpr.intExpr().accept(this);
switch(intExpr.op()) {
case NEG : ret = child.negate(); break;
case NOT : ret = child.not(); break;
case ABS : ret = child.abs(); break;
case SGN : ret = child.sgn(); break;
default :
throw new IllegalArgumentException("Unknown operator: " + intExpr.op());
}
return cache(intExpr, ret);