anchor.diff:    (canonicalize (parse-type type)))
   
   ;;; Translate VALUE to a foreign object of the type represented by
  -;;; TYPE, which will be a subclass of ENHANCED-FOREIGN-TYPE.  Returns
  -;;; the foreign value and an optional second value which will be
  -;;; passed to FREE-TRANSLATED-OBJECT as the PARAM argument.
  +;;; TYPE, which will be a subclass of TRANSLATABLE-FOREIGN-TYPE.
  +;;; Returns the foreign value and an optional second value which will
  +;;; be passed to FREE-TRANSLATED-OBJECT as the PARAM argument.
   (defgeneric translate-to-foreign (value type)
     (:method (value type)
       (declare (ignore type))
  
positive.code:     `(let ((,var ,value)) ,@body)))
  
  (defmethod expand-to-foreign-dyn :around
      (value var body (type enhanced-foreign-type))
    (let ((*runtime-translator-form*
           (with-unique-names (param)
             `(multiple-value-bind (,var ,param)
  
negative.code:     (declare (ignore type))
      value))
  
  (defmethod expand-from-foreign :around (value (type translatable-foreign-type))
    (let ((*runtime-translator-form* `(translate-from-foreign ,value ,type)))
      (call-next-method)))
  
  (defmethod expand-from-foreign (value (type translatable-foreign-type))
    (declare (ignore value))
    *runtime-translator-form*)
  
  