protected Expr HandleBuiltIns(FunctionCall fc, string builtin, List <Expr> newArgs)
        {
            // We support very few builtins here. People shouldn't be using them
            switch (builtin)
            {
            case "div":
                Debug.Assert(newArgs.Count == 2);
                return(Builder.Div(newArgs[0], newArgs[1]));

            case "mod":
                Debug.Assert(newArgs.Count == 2);
                return(Builder.Mod(newArgs[0], newArgs[1]));

            case "rem":
                Debug.Assert(newArgs.Count == 2);
                return(Builder.Rem(newArgs[0], newArgs[1]));

            default:
                throw new NotImplementedException("Builtin \"" + builtin + "\" not supported");
            }
        }
 public virtual Expr Rem(Expr lhs, Expr rhs)
 {
     return(UB.Rem(lhs, rhs));
 }