public static bool Equals(ValueProxy val1, ValueProxy val2) { switch (conv_t[val1.GetValueCode(), val2.GetValueCode()]) { case -1: return val2.Promote(val1).Eq(val2); case 0: return val1.Eq(val2); case 1: return val1.Eq(val1.Promote(val2)); default: { if (conv_t[val2.GetValueCode(), val1.GetValueCode()] == 1) return val2.Promote(val1).Eq(val2); throw new OperatorMismatchException(Funcs.Eq, val1, val2); } } }