save_inst():  Rewrote to have only one branch on self.bin.  Also got rid
of my recent XXX comment, taking a (what appears to be vanishingly small)
chance and calling self.memoize() instead.
diff --git a/Lib/pickle.py b/Lib/pickle.py
index ebc2b68..ca98ae3 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -551,7 +551,6 @@
         dispatch[PyStringMap] = save_dict
 
     def save_inst(self, object):
-        d = id(object)
         cls = object.__class__
 
         memo  = self.memo
@@ -569,23 +568,15 @@
 
         if self.bin:
             save(cls)
-
-        for arg in args:
-            save(arg)
-
-        # This method does not use memoize() so that it can handle
-        # the special case for non-binary mode.
-        # XXX What did that comment mean?  That is, what "special case for
-        # XXX non-binary mode"?  It sure *looks* like nothing special is
-        # XXX happening in the INST case.
-        memo_len = len(memo)
-        if self.bin:
-            write(OBJ + self.put(memo_len))
+            for arg in args:
+                save(arg)
+            write(OBJ)
         else:
-            write(INST + cls.__module__ + '\n' + cls.__name__ + '\n' +
-                self.put(memo_len))
+            for arg in args:
+                save(arg)
+            write(INST + cls.__module__ + '\n' + cls.__name__ + '\n')
 
-        memo[d] = (memo_len, object)
+        self.memoize(object)
 
         try:
             getstate = object.__getstate__
@@ -596,6 +587,7 @@
             _keep_alive(stuff, memo)
         save(stuff)
         write(BUILD)
+
     dispatch[InstanceType] = save_inst
 
     def save_global(self, object, name = None):
@@ -626,6 +618,7 @@
 
         write(GLOBAL + module + '\n' + name + '\n')
         self.memoize(object)
+
     dispatch[ClassType] = save_global
     dispatch[FunctionType] = save_global
     dispatch[BuiltinFunctionType] = save_global