diff --git a/Lib/collections.py b/Lib/collections.py
index 79912ec..b2a590b 100644
--- a/Lib/collections.py
+++ b/Lib/collections.py
@@ -98,16 +98,6 @@
             yield curr.key
             curr = curr.prev
 
-    def __reduce__(self):
-        'Return state information for pickling'
-        items = [[k, self[k]] for k in self]
-        inst_dict = vars(self).copy()
-        for k in vars(OrderedDict()):
-            inst_dict.pop(k, None)
-        if inst_dict:
-            return (self.__class__, (items,), inst_dict)
-        return self.__class__, (items,)
-
     update = __update = MutableMapping.update
     keys = MutableMapping.keys
     values = MutableMapping.values
@@ -156,6 +146,16 @@
             self.__in_repr = False
         return result
 
+    def __reduce__(self):
+        'Return state information for pickling'
+        items = [[k, self[k]] for k in self]
+        inst_dict = vars(self).copy()
+        for k in vars(OrderedDict()):
+            inst_dict.pop(k, None)
+        if inst_dict:
+            return (self.__class__, (items,), inst_dict)
+        return self.__class__, (items,)
+
     def copy(self):
         'od.copy() -> a shallow copy of od'
         return self.__class__(self)
