anchor.diff:               (logior :commutative-arithmetic)
                (logxor :commutative-arithmetic)
                (lognot (integer))
  -             (sys.int::binary-= :commutative-arithmetic)
  -             (sys.int::binary-+ :commutative-arithmetic)
  -             (sys.int::binary-- (number number))
  -             (sys.int::binary-* :commutative-arithmetic)
  -             (sys.int::binary-logand (integer integer))
  -             (sys.int::binary-logeqv (integer integer))
  -             (sys.int::binary-logior (integer integer))
  -             (sys.int::binary-logxor (integer integer))
  +             (sys.int::binary-= :commutative-arithmetic =)
  +             (sys.int::binary-+ :commutative-arithmetic +)
  +             (sys.int::binary-- (number number) -)
  +             (sys.int::binary-* :commutative-arithmetic *)
  +             (sys.int::binary-logand (integer integer) logand)
  +             (sys.int::binary-logeqv (integer integer) logeqv)
  +             (sys.int::binary-logior (integer integer) logior)
  +             (sys.int::binary-logxor (integer integer) logxor)
                (mezzano.runtime::left-shift (integer integer))
                (mezzano.runtime::right-shift (integer integer))
  -             (sys.int::binary-< (number number))
  -             (sys.int::binary-<= (number number))
  -             (sys.int::binary-> (number number))
  -             (sys.int::binary->= (number number))
  -             (sys.int::binary-= (number number))
  -             (mezzano.runtime::%fixnum-< (integer integer))
  +             (sys.int::binary-< (number number) <)
  +             (sys.int::binary-<= (number number) <=)
  +             (sys.int::binary-> (number number) >)
  +             (sys.int::binary->= (number number) >=)
  +             (sys.int::binary-= (number number) =)
  +             (mezzano.runtime::%fixnum-+ (integer integer) +)
  +             (mezzano.runtime::%fixnum-- (integer integer) -)
  +             (mezzano.runtime::%fixnum-* (integer integer) *)
  +             (mezzano.runtime::%fixnum-< (integer integer) <)
  +             (%fast-fixnum-+ (integer integer) +)
  +             (%fast-fixnum-- (integer integer) -)
  +             (%fast-fixnum-* (integer integer) *)
                (sys.int::fixnump (t))
                (symbolp (t))
                (byte-size (byte))
                (byte-position (byte))
                (keywordp (symbol))
                (sys.int::%type-check (t fixnum t))))
  -  (setf (get (first x) 'constant-fold-mode) (second x)))
  +  (setf (get (first x) 'constant-fold-mode) (second x))
  +  (when (third x)
  +    (setf (get (first x) 'constant-folder) (third x))))
   
   (defun mark-as-constant-foldable (name)
     (setf (get name 'constant-fold-mode) t))
  
positive.code:                           (push (value unwrapped) constant-accu))
                           (t
                            (when constant-accu
                              (push (ast `(quote ,(apply function (nreverse constant-accu)))
                                         form)
                                    arg-accu)
                              (setf constant-accu nil))
  
negative.code:               form))
          ((eql t)
           ;; Any arguments!
           (ast `(quote ,(apply folder
                                (mapcar (lambda (thing)
                                          ;; Bail out if thing is non-constant or does not match the type.
                                          (setf thing (unwrap-the thing))
  