Object left = evaluate(owner, l);
Object right = evaluate(owner, r);
if ( ( left instanceof XObject ) && ( right instanceof XObject ) ) {
switch ( op ) {
case OpCodes.OP_NOTEQUALS: return new XBoolean(((XObject)left).notEquals((XObject)right));
case OpCodes.OP_EQUALS: return new XBoolean(((XObject)left).equals((XObject)right));
case OpCodes.OP_LTE: return new XBoolean(((XObject)left).lessThanOrEqual((XObject)right));
case OpCodes.OP_LT: return new XBoolean(((XObject)left).lessThan((XObject)right));
case OpCodes.OP_GTE: return new XBoolean(((XObject)left).greaterThanOrEqual((XObject)right));
case OpCodes.OP_GT: return new XBoolean(((XObject)left).greaterThan((XObject)right));
default: return null; // Won't happen
}
}
else
return queryComparison(op, owner, left, right);