@SuppressWarnings("unchecked")
    public void eval(EvalContext context) {
        context.logEntering("Comparaison " + operator);
        
        right.eval(context);
        Object rightB = context.pop();
        context.log("Evaluating right operand: " + rightB);
        //
        left.eval(context);
        Object leftB = context.pop();
        context.log("Evaluating left operand: " + rightB);
        //
        int val = ((Comparable<Object>)leftB).compareTo(rightB);
        boolean res;
        if(val==0) {
            res = operator==Op.GreaterOrEqual || operator==Op.Equal || operator==Op.LowerOrEqual;
        }
        else if(val>0) {
            res = operator==Op.GreaterOrEqual || operator==Op.Greater;
        }
        else {
            res = operator==Op.LowerOrEqual || operator==Op.Lower;
        }
        context.push(res);
        context.logLeaving("Comparaison " + operator +" res: " + res);
    }