anchor.diff:    (check-type parameter symbol)
     (make-instance 'simple-parameter :variable parameter))
   
  +(defmethod unparse ((parameter simple-parameter))
  +  (variable parameter))
  +
   (defclass required-parameter (parameter parameter-variable-mixin)
     ())
   
  
positive.code:     (make-instance 'optional-parameter
                     :variable variable
                     :initform initform)))
  
negative.code:   (check-type parameter symbol)
    (make-instance 'required-parameter :variable parameter))
  
  (defmethod unparse ((parameter required-parameter))
    (variable parameter))
  
  (defclass specializable-parameter (required-parameter)
    ((%specializer :initarg :specializer
                   :reader specializer
                   :initform t)))
  
  (defun %parse-specializable-parameter (parameter)
    (multiple-value-bind (variable specializer)
        (if (symbolp parameter)
            (values parameter t)
            (destructuring-bind (variable &optional (specializer t))
                parameter
              (values variable specializer)))
      (make-instance 'specializable-parameter
                     :variable variable
                     :specializer specializer)))
  
  (defmethod unparse ((parameter specializable-parameter))
    (let ((variable (variable parameter))
          (specializer (specializer parameter)))
      (if (eq specializer t)
          variable
          (list variable specializer))))
  
  (defclass optional-parameter (parameter parameter-variable-mixin parameter-initform-mixin parameter-suppliedp-variable-mixin)
    ())
  
  