public int Compare(object x, object y) { if (x == null || y == null) { return(1); } if (ReferenceEquals(x, y)) { return(0); } TinyValue obj1 = (TinyValue)x; TinyValue obj2 = (TinyValue)y; if (obj1.value is float && obj2.value is float) { if (obj1.Equals(obj2)) { return(0); } return(this.asFloat().CompareTo(obj2.asFloat())); } else if (obj1.isString() && obj2.isString()) { return(obj1.asString().CompareTo(obj2.asString())); } throw new InvalidOperationException("Could not compare expression: '" + obj1 + "' against '" + obj2 + "'"); }