return exp.getExpr().accept(this);
Type t = (Type)exp.getExpr().accept(this);   if (t.equals(TypePrimitive.bittype)) { switch (exp.getOp()) { case ExprUnary.UNOP_NOT: {  return TypePrimitive.bittype; } case ExprUnary.UNOP_NEG: case ExprUnary.UNOP_PREINC: case ExprUnary.UNOP_POSTINC: case ExprUnary.UNOP_PREDEC: case ExprUnary.UNOP_POSTDEC: { return TypePrimitive.inttype; } } } return t;
    public Object visitExprUnary(ExprUnary exp)    {        // A little more solid ground here: the type of -foo and !foo        // will probably always be the same as the type of foo.        return exp.getExpr().accept(this);    }