Index: /trunk/ccl/examples/objc-clos.lisp
===================================================================
--- /trunk/ccl/examples/objc-clos.lisp	(revision 452)
+++ /trunk/ccl/examples/objc-clos.lisp	(revision 453)
@@ -698,13 +698,11 @@
     (apply #'initialize-instance instance initargs)))
 
+
 (defun remove-slot-initargs (class initargs)
   (let* ((slot-initargs (class-slot-initargs class))) ; cache this, maybe
-    (collect ((non-slot-initargs))
-      (do* ((key (pop initargs) (pop initargs))
-	    (val (pop initargs) (pop initargs)))
-	   ((null initargs) (non-slot-initargs))
-	(unless (member key slot-initargs :test #'eq)
-	  (non-slot-initargs key)
-	  (non-slot-initargs val))))))
+    (loop for l = initargs then (cddr l)
+	  when (null l) do (return-from remove-slot-initargs new-initargs)
+	  unless (member (first l)  slot-initargs :test #'eq)
+	    append (list (first l) (second l))  into new-initargs)))
 
 (defmethod allocate-instance ((class objc:objc-class) &rest initargs &key &allow-other-keys)
