class IntConst extends ASTree {
    /** default serialVersionUID */
    private static final long serialVersionUID = 1L;
    protected long value;
    protected int type;

    public IntConst(long v, int tokenId) { value = v; type = tokenId; }

    public long get() { return value; }

    public void set(long v) { value = v; }

    /* Returns IntConstant, CharConstant, or LongConstant.
     */
    public int getType() { return type; }

    @Override
    public String toString() { return Long.toString(value); }

    @Override
    public void accept(Visitor v) throws CompileError {
        v.atIntConst(this);
    }

    public ASTree compute(int op, ASTree right) {
        if (right instanceof IntConst)
            return compute0(op, (IntConst)right);
        else if (right instanceof DoubleConst)
            return compute0(op, (DoubleConst)right);
        else
            return null;
    }

    private IntConst compute0(int op, IntConst right) {<FILL_FUNCTION_BODY>}

    private DoubleConst compute0(int op, DoubleConst right) {
        double value1 = this.value;
        double value2 = right.value;
        double newValue;
        switch (op) {
        case '+' :
            newValue = value1 + value2;
            break;
        case '-' :
            newValue = value1 - value2;
            break;
        case '*' :
            newValue = value1 * value2;
            break;
        case '/' :
            newValue = value1 / value2;
            break;
        case '%' :
            newValue = value1 % value2;
            break;
        default :
            return null;
        }

        return new DoubleConst(newValue, right.type);
    }
}

        int type1 = this.type;
        int type2 = right.type;
        int newType;
        if (type1 == TokenId.LongConstant || type2 == TokenId.LongConstant)
            newType = TokenId.LongConstant;
        else if (type1 == TokenId.CharConstant
                 && type2 == TokenId.CharConstant)
            newType = TokenId.CharConstant;
        else
            newType = TokenId.IntConstant;

        long value1 = this.value;
        long value2 = right.value;
        long newValue;
        switch (op) {
        case '+' :
            newValue = value1 + value2;
            break;
        case '-' :
            newValue = value1 - value2;
            break;
        case '*' :
            newValue = value1 * value2;
            break;
        case '/' :
            newValue = value1 / value2;
            break;
        case '%' :
            newValue = value1 % value2;
            break;
        case '|' :
            newValue = value1 | value2;
            break;
        case '^' :
            newValue = value1 ^ value2;
            break;
        case '&' :
            newValue = value1 & value2;
            break;
        case TokenId.LSHIFT :
            newValue = value << (int)value2;
            newType = type1;
            break;
        case TokenId.RSHIFT :
            newValue = value >> (int)value2;
            newType = type1;
            break;
        case TokenId.ARSHIFT :
            newValue = value >>> (int)value2;
            newType = type1;
            break;
        default :
            return null;
        }

        return new IntConst(newValue, newType);
    
<methods>public non-sealed void <init>() ,public abstract void accept(org.hotswap.agent.javassist.compiler.ast.Visitor) throws org.hotswap.agent.javassist.compiler.CompileError,public org.hotswap.agent.javassist.compiler.ast.ASTree getLeft() ,public org.hotswap.agent.javassist.compiler.ast.ASTree getRight() ,public void setLeft(org.hotswap.agent.javassist.compiler.ast.ASTree) ,public void setRight(org.hotswap.agent.javassist.compiler.ast.ASTree) ,public java.lang.String toString() <variables>private static final long serialVersionUID