anchor.diff:             (declare ,@(loop for temp in temps collect `(function ,temp)))
              (flet ,(loop for (name nil) in complex
                           for temp in temps
  -                        collect `(,name (&rest args)
  -                                        (declare (dynamic-extent args))
  -                                        (apply ,temp args)))
  +                        collect (build-bind/ftype name temp complex-decls env))
                ,@complex-decls
                (comment "Lambdas")
                (labels (,@(loop for (name lambda) in lambda
  
positive.code:     (declare (ignore req rest other-keys keyp))
      (notany (disjoin #'second #'third)
              (append opt keys aux))))
  
  (defun partition-declarations-by-kind
      (simple complex lambda decls)
  
negative.code:   (mvlet* ((env env-decls bindings lambdas (analyze-fbinds bindings))
             (body decls (parse-body body))
             (simple complex lambda unref
              (partition-fbinds (append bindings lambdas)
                                body))
             (temps (mapcar (compose #'gensym #'string #'first) complex))
             (simple-decls complex-decls lambda-decls others
              (partition-declarations-by-kind simple complex lambda decls)))
      `(let ,env
         ,@(when env-decls (unsplice `(declare ,@env-decls)))
         ;; Simple expressions reference functions already defined
  