+
+;;; DEFGENERIC's blow-away-old-methods behavior is specified to have
+;;; special hacks to distinguish between defined-with-DEFGENERIC-:METHOD
+;;; methods and defined-with-DEFMETHOD methods, so that reLOADing
+;;; DEFGENERIC-containing files does the right thing instead of
+;;; randomly slicing your generic functions. (APD made this work
+;;; in sbcl-0.7.0.2.)
+(defgeneric born-to-be-redefined (x)
+ (:method ((x integer))
+ 'integer))
+(defmethod born-to-be-redefined ((x real))
+ 'real)
+(assert (eq (born-to-be-redefined 1) 'integer))
+(defgeneric born-to-be-redefined (x))
+(assert (eq (born-to-be-redefined 1) 'real)) ; failed until sbcl-0.7.0.2
+(defgeneric born-to-be-redefined (x)
+ (:method ((x integer))
+ 'integer))
+(defmethod born-to-be-redefined ((x integer))
+ 'int)
+(assert (eq (born-to-be-redefined 1) 'int))
+(defgeneric born-to-be-redefined (x))
+(assert (eq (born-to-be-redefined 1) 'int))