anchor.diff:  	(when (and clos-class (typep clos-class 'standard-class))
   	  (return-from presentation-typep (typep object name)))))
       (funcall-presentation-generic-function presentation-typep object type)))
  +
  +;;; Not defined as a generic function, but what the hell.
  +
  +(defgeneric presentation-type-of (object))
  +
  +(defmethod presentation-type-of (object)
  +  'expression)
  +
  +(defmethod presentation-type-of ((object standard-object))
  +  (let* ((name (clim-mop:class-name (class-of object)))
  +	 (ptype-entry (gethash name *presentation-type-table*)))
  +    (unless ptype-entry
  +      (return-from presentation-type-of name))
  +    ;; Does the type have required parameters?  If so, we can't use it...
  +    (let ((parameter-ll (parameters-lambda-list ptype-entry)))
  +      (when (eq (car parameter-ll) &whole)
  +	(setq parameter-ll (cddr parameter-ll)))
  +      (if (member (car parameter-ll) lambda-list-keywords)
  +	  name
  +	  (call-next-method)))))
   
   (define-presentation-generic-function
       %map-over-presentation-type-supertypes
  
positive.code: 	do (when (presentation-typep object real-type)
  	     (return-from %presentation-typep t)))
    nil)
  
  (define-presentation-type and (&rest types)
    :parameters-are-types t)
  
negative.code: 				   super-sequence super-test super-value-key)
  		t)))))
  
  (define-presentation-method present ((object list) (type subset-completion)
  				     stream
  				     (view textual-view)
  				     &key acceptably for-context-type)
    (declare (ignore for-context-type))
    (loop for tail on object
  	for (obj) = tail
  	do (progn
  	     (present obj (presentation-type-of object)
  			:stream stream :view view
  			:acceptably acceptably
  			:sensitive nil)
  	     (when (cdr tail)
  	       (if acceptably
  		   (princ separator stream)
  		   (terpri stream))))))
  
  (define-presentation-method present ((object vector) (type subset-completion)
  				     stream
  				     (view textual-view)
  				     &key acceptably for-context-type)
    (declare (ignore for-context-type))
    (loop for i from 0 below (length object)
  	for obj = (aref object i)
  	do (progn
  	     (present obj (presentation-type-of object)
  			:stream stream :view view
  			:acceptably acceptably
  			:sensitive nil)
  	     (when (< i (1- (length object)))
  	       (if acceptably
  		   (princ separator stream)
  		   (terpri stream))))))
  
  ;;; XXX is it a typo in the spec that subset, subset-sequence and subset-alist
  ;;; have the same options as completion, and not subset-completion?
  
  