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