anchor.diff:              (mapcar #'list (transform-lambda-list object) (transform-argument-types object))
               (transform-result-type object))))
   
  -(defvar *transforms* '())
  +(defvar *transforms* (make-hash-table :test 'equal))
   
   (defmacro define-transform (function lambda-list options &body body)
     (let ((lambda-parameters (loop
  
positive.code:          (typep (value argument) transform-type))))
  
  (defun match-one-transform (transform call result-type target-architecture)
    (and (equal (transform-function transform) (ast-name call))
         (or (eql (transform-architecture transform) 't)
             (member target-architecture (transform-architecture transform)))
         (match-optimize-settings call (transform-optimize transform))
         (match-transform-type (transform-result-type transform) result-type)
  
negative.code:               (arguments call))))
  
  (defun match-transform (call result-type target-architecture)
    (dolist (transform (gethash (ast-name call) *transforms*) nil)
      (when (match-one-transform transform call result-type target-architecture)
        (return transform))))
  
  