public boolean matches(ValueEval x) {double testValue;if(x instanceof StringEval) {switch (getCode()) {case CmpOp.EQ:case CmpOp.NONE:break;case CmpOp.NE:return true;default:return false;}StringEval se = (StringEval)x;Double val = OperandResolver.parseDouble(se.getStringValue());if(val == null) {return false;}return _value == val.doubleValue();} else if((x instanceof NumberEval)) {NumberEval ne = (NumberEval) x;testValue = ne.getNumberValue();} else if((x instanceof BlankEval)) {switch (getCode()) {case CmpOp.NE:return true;default:return false;}} else {return false;}return evaluate(Double.compare(testValue, _value));}

public override bool Matches(ValueEval x){double testValue;if (x is StringEval){switch (Code){case CmpOp.EQ:case CmpOp.NONE:break;case CmpOp.NE:return true;default:return false;}StringEval se = (StringEval)x;Double val = OperandResolver.ParseDouble(se.StringValue);if (double.IsNaN(val)){return false;}return _value == val;}else if ((x is NumberEval)){NumberEval ne = (NumberEval)x;testValue = ne.NumberValue;}else if ((x is BlankEval)){switch (Code){case CmpOp.NE:return true;default:return false;}}else{return false;}return Evaluate(testValue.CompareTo(_value));}
