Index: /branches/working-0711/ccl/level-1/l1-clos.lisp
===================================================================
--- /branches/working-0711/ccl/level-1/l1-clos.lisp	(revision 7922)
+++ /branches/working-0711/ccl/level-1/l1-clos.lisp	(revision 7923)
@@ -1753,10 +1753,20 @@
 (defun optimize-generic-function-dispatching ()
   (dolist (gf (population.data %all-gfs%))
-    (when (eq #'%%one-arg-dcode (%gf-dcode gf))
+    (optimize-dispatching-for-gf gf)))
+
+(defun optimize-dispatching-for-gf (gf)
+  (let* ((dcode (%gf-dcode gf)))
+    (when (or (eq dcode #'%%one-arg-dcode)
+              (eq dcode #'%%nth-arg-dcode))
       (let ((methods (generic-function-methods gf)))
-        (when (eql 1 (length methods))
-          (override-one-method-one-arg-dcode gf (car methods)))))))
-
-
+        (when (and methods (null (cdr methods)))
+          (when (or (eq #'%%one-arg-dcode dcode)
+                    (and (eq #'%%nth-arg-dcode dcode)
+                         (let ((spec (method-specializers (car methods)))
+                               (argnum (%gf-dispatch-table-argnum
+                                        (%gf-dispatch-table gf))))
+                           (and (eql 2 (length spec))
+                                (and (eql argnum 1) (eq (car spec) *t-class*))))))
+            (override-one-method-one-arg-dcode gf (car methods))))))))
 
 ;;; dcode for a GF with a single reader method which accesses
