+(defmethod (setf documentation) (new-value (x symbol) (doc-type (eql 'setf)))
+ (setf (info :setf :documentation x) new-value))
+\f
+;;; method combinations
+(defmethod documentation ((x method-combination) (doc-type (eql 't)))
+ (slot-value x '%documentation))
+
+(defmethod documentation
+ ((x method-combination) (doc-type (eql 'method-combination)))
+ (slot-value x '%documentation))
+
+(defmethod documentation ((x symbol) (doc-type (eql 'method-combination)))
+ (random-documentation x 'method-combination))
+
+(defmethod (setf documentation)
+ (new-value (x method-combination) (doc-type (eql 't)))
+ (setf (slot-value x '%documentation) new-value))
+
+(defmethod (setf documentation)
+ (new-value (x method-combination) (doc-type (eql 'method-combination)))
+ (setf (slot-value x '%documentation) new-value))
+
+(defmethod (setf documentation)
+ (new-value (x symbol) (doc-type (eql 'method-combination)))
+ (setf (random-documentation x 'method-combination) new-value))
+\f
+;;; methods
+(defmethod documentation ((x standard-method) (doc-type (eql 't)))
+ (slot-value x '%documentation))
+
+(defmethod (setf documentation)
+ (new-value (x standard-method) (doc-type (eql 't)))
+ (setf (slot-value x '%documentation) new-value))
+\f