anchor.diff:         types)
     t)
   
  +(define-presentation-method presentation-subtypep ((type sequence-enumerated)
  +						   maybe-supertype)
  +  (with-presentation-type-parameters (sequence-enumerated maybe-supertype)
  +    (let ((supertypes types))
  +      (with-presentation-type-parameters (sequence-enumerated type)
  +	(unless (eql (length supertypes) (length types))
  +	  (return-from %presentation-subtypep (values nil t)))
  +	(map nil
  +	     #'(lambda (element-type element-supertype)
  +		 (let ((real-type (expand-presentation-type-abbreviation
  +				   element-type))
  +		       (real-supertype (expand-presentation-type-abbreviation
  +					element-supertype)))
  +		   (multiple-value-bind (subtypep determined)
  +		       (presentation-subtypep real-type real-supertype)
  +		     (cond ((not determined)
  +			    (return-from %presentation-subtypep
  +			      (values nil nil)))
  +			   ((not subtypep)
  +			    (return-from %presentation-subtypep
  +			      (values nil t)))))))
  +	     types
  +	     supertypes)
  +	(values t t)))))
  +
   (define-presentation-type or (&rest types)
     :parameters-are-types t)
   
  
positive.code: 	    :documentation "Who knows?")
     (parameters-are-types :accessor parameters-are-types 
  			 :initarg :parameters-are-types
  			 :initform nil)))
  
  (defmethod initialize-instance :after ((obj presentation-type) &key)
    (unless (slot-boundp obj 'ptype-specializer)
  
negative.code: 	      finally (return (values qualifiers arg (cdr arglist)))))
  
  (defmacro define-presentation-method (name &rest args)
    (when (eq name 'presentation-subtypep)
      ;; I feel so unclean!
      (return-from define-presentation-method
        `(define-subtypep-method ,@args)))
    (let ((gf (gethash name *presentation-gf-table*)))
      (unless gf
        (error "~S is not a presentation generic function" name))
  