diff --git a/BTrees/_base.py b/BTrees/_base.py
index 3158d91..bef710a 100644
--- a/BTrees/_base.py
+++ b/BTrees/_base.py
@@ -111,7 +111,7 @@ class _BucketBase(_Base):
         while low < high:
             i = (low + high) // 2
             k = keys[i]
-            if k == key:
+            if k is key or k == key:
                 return i
             if k < key:
                 low = i + 1
diff --git a/CHANGES.rst b/CHANGES.rst
index c396cf6..d40ebd9 100644
--- a/CHANGES.rst
+++ b/CHANGES.rst
@@ -6,10 +6,18 @@
 
 - Make the CPython implementation consistent with the pure-Python
   implementation and only check object keys for default comparison
-  when setting keys. In Python 2 this makes it possible to remove
-  keys that were added using a less restrictive version of BTrees.
-  (In Python 3 keys that are unorderable still cannot be removed.)
-  See: https://github.com/zopefoundation/BTrees/issues/53
+  when setting keys. In Python 2 this makes it possible to remove keys
+  that were added using a less restrictive version of BTrees. (In
+  Python 3 keys that are unorderable still cannot be removed.)
+  Likewise, all versions can unpickle trees that already had such
+  keys. See: https://github.com/zopefoundation/BTrees/issues/53 and
+  https://github.com/zopefoundation/BTrees/issues/51
+
+- Make the Python implementation consistent with the CPython
+  implementation and check object key identity before checking
+  equality and performing comparisons. This can allow fixing trees
+  that have keys that now have broken comparison functions. See
+  https://github.com/zopefoundation/BTrees/issues/50
 
 - Make the CPython implementation consistent with the pure-Python
   implementation and no longer raise ``TypeError`` for an object key

diff --git a/BTrees/tests/test_OOBTree.py b/BTrees/tests/test_OOBTree.py
index 36643ab..08d77f9 100644
--- a/BTrees/tests/test_OOBTree.py
+++ b/BTrees/tests/test_OOBTree.py
@@ -161,12 +161,12 @@ class OOBTreeTest(BTreeTests, unittest.TestCase):
         self.assertRaises(KeyError, t.__getitem__, C())
         self.assertFalse(C() in t)
 
-    # Check that a None key can be deleted in Python 2.
-    # This doesn't work on Python 3 because None is unorderable,
-    # so the tree can't be searched. But None also can't be inserted,
-    # and we don't support migrating Python 2 databases to Python 3.
     @_skip_under_Py3k
     def testDeleteNoneKey(self):
+        # Check that a None key can be deleted in Python 2.
+        # This doesn't work on Python 3 because None is unorderable,
+        # so the tree can't be searched. But None also can't be inserted,
+        # and we don't support migrating Python 2 databases to Python 3.
         t = self._makeOne()
         bucket_state = ((None, 42),)
         tree_state = ((bucket_state,),)
@@ -175,6 +175,45 @@ class OOBTreeTest(BTreeTests, unittest.TestCase):
         self.assertEqual(t[None], 42)
         del t[None]
 
+    def testUnpickleNoneKey(self):
+        # All versions (py2 and py3, C and Python) can unpickle
+        # data that looks like this: {None: 42}, even though None
+        # is unorderable..
+        # This pickle was captured in BTree/ZODB3 3.10.7
+        data = b'ccopy_reg\n__newobj__\np0\n(cBTrees.OOBTree\nOOBTree\np1\ntp2\nRp3\n((((NI42\ntp4\ntp5\ntp6\ntp7\nb.'
+
+        import pickle
+        t = pickle.loads(data)
+        keys = list(t)
+        self.assertEqual([None], keys)
+
+    def testIdentityTrumpsBrokenComparison(self):
+        # Identical keys always match, even if their comparison is
+        # broken. See https://github.com/zopefoundation/BTrees/issues/50
+        from functools import total_ordering
+
+        @total_ordering
+        class Bad(object):
+            def __eq__(self, other):
+                return False
+
+            def __cmp__(self, other):
+                return 1
+
+            def __lt__(self, other):
+                return False
+
+        t = self._makeOne()
+        bad_key = Bad()
+        t[bad_key] = 42
+
+        self.assertIn(bad_key, t)
+        self.assertEqual(list(t), [bad_key])
+
+        del t[bad_key]
+        self.assertNotIn(bad_key, t)
+        self.assertEqual(list(t), [])
+
 
 class OOBTreePyTest(OOBTreeTest):
 #

C/Py difference: keys that are the same object
The C implementation does a comparison [by first checking whether the two keys are the same pointer](https://github.com/python/cpython/blob/2.7/Objects/object.c#L997); the Python implementation just goes [right to the `==` operator](https://github.com/zopefoundation/BTrees/blob/master/BTrees/_base.py#L114). In some cases of (broken?) objects this leads to a discrepancy: The C implementation can find a key, but the Python implementation cannot.

I would suggest that the Python implementation should use `k is key or k == key` to clear this up.

See https://groups.google.com/forum/#!topic/zodb/xhVM0ejl6aE
BTrees/tests/test_OOBTree.py::OOBTreePyTest::testIdentityTrumpsBrokenComparison
BTrees/tests/test_OOBTree.py::OOBucketTest::testBadUpdateTupleSize BTrees/tests/test_OOBTree.py::OOBucketTest::testClear BTrees/tests/test_OOBTree.py::OOBucketTest::testDeleteInvalidKeyRaisesKeyError BTrees/tests/test_OOBTree.py::OOBucketTest::testEmptyRangeSearches BTrees/tests/test_OOBTree.py::OOBucketTest::testGetItemFails BTrees/tests/test_OOBTree.py::OOBucketTest::testGetReturnsDefault BTrees/tests/test_OOBTree.py::OOBucketTest::testHasKeyWorks BTrees/tests/test_OOBTree.py::OOBucketTest::testItemsNegativeIndex BTrees/tests/test_OOBTree.py::OOBucketTest::testItemsWorks BTrees/tests/test_OOBTree.py::OOBucketTest::testIterators BTrees/tests/test_OOBTree.py::OOBucketTest::testKeysNegativeIndex BTrees/tests/test_OOBTree.py::OOBucketTest::testKeysWorks BTrees/tests/test_OOBTree.py::OOBucketTest::testLen BTrees/tests/test_OOBTree.py::OOBucketTest::testMaxKeyMinKey BTrees/tests/test_OOBTree.py::OOBucketTest::testPop BTrees/tests/test_OOBTree.py::OOBucketTest::testRangedIterators BTrees/tests/test_OOBTree.py::OOBucketTest::testReplaceWorks BTrees/tests/test_OOBTree.py::OOBucketTest::testRepr BTrees/tests/test_OOBTree.py::OOBucketTest::testSetItemGetItemWorks BTrees/tests/test_OOBTree.py::OOBucketTest::testSetdefault BTrees/tests/test_OOBTree.py::OOBucketTest::testSetstateArgumentChecking BTrees/tests/test_OOBTree.py::OOBucketTest::testShortRepr BTrees/tests/test_OOBTree.py::OOBucketTest::testSimpleExclusivRanges BTrees/tests/test_OOBTree.py::OOBucketTest::testSimpleExclusiveKeyRange BTrees/tests/test_OOBTree.py::OOBucketTest::testSlicing BTrees/tests/test_OOBTree.py::OOBucketTest::testUpdate BTrees/tests/test_OOBTree.py::OOBucketTest::testUpdateFromPersistentMapping BTrees/tests/test_OOBTree.py::OOBucketTest::testValuesNegativeIndex BTrees/tests/test_OOBTree.py::OOBucketTest::testValuesWorks BTrees/tests/test_OOBTree.py::OOBucketTest::testValuesWorks1 BTrees/tests/test_OOBTree.py::OOBucketTest::test_impl_pickle BTrees/tests/test_OOBTree.py::OOBucketTest::test_isinstance_subclass BTrees/tests/test_OOBTree.py::OOBucketTest::test_pickle_empty BTrees/tests/test_OOBTree.py::OOBucketTest::test_pickle_subclass BTrees/tests/test_OOBTree.py::OOBucketPyTest::testBadUpdateTupleSize BTrees/tests/test_OOBTree.py::OOBucketPyTest::testClear BTrees/tests/test_OOBTree.py::OOBucketPyTest::testDeleteInvalidKeyRaisesKeyError BTrees/tests/test_OOBTree.py::OOBucketPyTest::testEmptyRangeSearches BTrees/tests/test_OOBTree.py::OOBucketPyTest::testGetItemFails BTrees/tests/test_OOBTree.py::OOBucketPyTest::testGetReturnsDefault BTrees/tests/test_OOBTree.py::OOBucketPyTest::testHasKeyWorks BTrees/tests/test_OOBTree.py::OOBucketPyTest::testItemsNegativeIndex BTrees/tests/test_OOBTree.py::OOBucketPyTest::testItemsWorks BTrees/tests/test_OOBTree.py::OOBucketPyTest::testIterators BTrees/tests/test_OOBTree.py::OOBucketPyTest::testKeysNegativeIndex BTrees/tests/test_OOBTree.py::OOBucketPyTest::testKeysWorks BTrees/tests/test_OOBTree.py::OOBucketPyTest::testLen BTrees/tests/test_OOBTree.py::OOBucketPyTest::testMaxKeyMinKey BTrees/tests/test_OOBTree.py::OOBucketPyTest::testPop BTrees/tests/test_OOBTree.py::OOBucketPyTest::testRangedIterators BTrees/tests/test_OOBTree.py::OOBucketPyTest::testReplaceWorks BTrees/tests/test_OOBTree.py::OOBucketPyTest::testRepr BTrees/tests/test_OOBTree.py::OOBucketPyTest::testSetItemGetItemWorks BTrees/tests/test_OOBTree.py::OOBucketPyTest::testSetdefault BTrees/tests/test_OOBTree.py::OOBucketPyTest::testSetstateArgumentChecking BTrees/tests/test_OOBTree.py::OOBucketPyTest::testShortRepr BTrees/tests/test_OOBTree.py::OOBucketPyTest::testSimpleExclusivRanges BTrees/tests/test_OOBTree.py::OOBucketPyTest::testSimpleExclusiveKeyRange BTrees/tests/test_OOBTree.py::OOBucketPyTest::testSlicing BTrees/tests/test_OOBTree.py::OOBucketPyTest::testUpdate BTrees/tests/test_OOBTree.py::OOBucketPyTest::testUpdateFromPersistentMapping BTrees/tests/test_OOBTree.py::OOBucketPyTest::testValuesNegativeIndex BTrees/tests/test_OOBTree.py::OOBucketPyTest::testValuesWorks BTrees/tests/test_OOBTree.py::OOBucketPyTest::testValuesWorks1 BTrees/tests/test_OOBTree.py::OOBucketPyTest::test_impl_pickle BTrees/tests/test_OOBTree.py::OOBucketPyTest::test_isinstance_subclass BTrees/tests/test_OOBTree.py::OOBucketPyTest::test_pickle_empty BTrees/tests/test_OOBTree.py::OOBucketPyTest::test_pickle_subclass BTrees/tests/test_OOBTree.py::OOTreeSetTest::testAddingOneSetsChanged BTrees/tests/test_OOBTree.py::OOTreeSetTest::testBigInsert BTrees/tests/test_OOBTree.py::OOTreeSetTest::testClear BTrees/tests/test_OOBTree.py::OOTreeSetTest::testDuplicateInsert BTrees/tests/test_OOBTree.py::OOTreeSetTest::testEmptyRangeSearches BTrees/tests/test_OOBTree.py::OOTreeSetTest::testHasKeyFails BTrees/tests/test_OOBTree.py::OOTreeSetTest::testInsert BTrees/tests/test_OOBTree.py::OOTreeSetTest::testInsertReturnsValue BTrees/tests/test_OOBTree.py::OOTreeSetTest::testIterator BTrees/tests/test_OOBTree.py::OOTreeSetTest::testKeys BTrees/tests/test_OOBTree.py::OOTreeSetTest::testMaxKeyMinKey BTrees/tests/test_OOBTree.py::OOTreeSetTest::testRemoveFails BTrees/tests/test_OOBTree.py::OOTreeSetTest::testRemoveInSmallSetSetsChanged BTrees/tests/test_OOBTree.py::OOTreeSetTest::testRemoveSucceeds BTrees/tests/test_OOBTree.py::OOTreeSetTest::testSetstateArgumentChecking BTrees/tests/test_OOBTree.py::OOTreeSetTest::testShortRepr BTrees/tests/test_OOBTree.py::OOTreeSetTest::testSimpleExclusiveKeyRange BTrees/tests/test_OOBTree.py::OOTreeSetTest::testSlicing BTrees/tests/test_OOBTree.py::OOTreeSetTest::testUpdate BTrees/tests/test_OOBTree.py::OOTreeSetTest::test_impl_pickle BTrees/tests/test_OOBTree.py::OOTreeSetTest::test_isinstance_subclass BTrees/tests/test_OOBTree.py::OOTreeSetTest::test_pickle_empty BTrees/tests/test_OOBTree.py::OOTreeSetTest::test_pickle_subclass BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testAddingOneSetsChanged BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testBigInsert BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testClear BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testDuplicateInsert BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testEmptyRangeSearches BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testHasKeyFails BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testInsert BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testInsertReturnsValue BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testIterator BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testKeys BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testMaxKeyMinKey BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testRemoveFails BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testRemoveInSmallSetSetsChanged BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testRemoveSucceeds BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testSetstateArgumentChecking BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testShortRepr BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testSimpleExclusiveKeyRange BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testSlicing BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::testUpdate BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::test_impl_pickle BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::test_isinstance_subclass BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::test_pickle_empty BTrees/tests/test_OOBTree.py::OOTreeSetPyTest::test_pickle_subclass BTrees/tests/test_OOBTree.py::OOSetTest::testAddingOneSetsChanged BTrees/tests/test_OOBTree.py::OOSetTest::testBigInsert BTrees/tests/test_OOBTree.py::OOSetTest::testClear BTrees/tests/test_OOBTree.py::OOSetTest::testDuplicateInsert BTrees/tests/test_OOBTree.py::OOSetTest::testEmptyRangeSearches BTrees/tests/test_OOBTree.py::OOSetTest::testGetItem BTrees/tests/test_OOBTree.py::OOSetTest::testHasKeyFails BTrees/tests/test_OOBTree.py::OOSetTest::testInsert BTrees/tests/test_OOBTree.py::OOSetTest::testInsertReturnsValue BTrees/tests/test_OOBTree.py::OOSetTest::testIterator BTrees/tests/test_OOBTree.py::OOSetTest::testKeys BTrees/tests/test_OOBTree.py::OOSetTest::testLen BTrees/tests/test_OOBTree.py::OOSetTest::testMaxKeyMinKey BTrees/tests/test_OOBTree.py::OOSetTest::testRemoveFails BTrees/tests/test_OOBTree.py::OOSetTest::testRemoveInSmallSetSetsChanged BTrees/tests/test_OOBTree.py::OOSetTest::testRemoveSucceeds BTrees/tests/test_OOBTree.py::OOSetTest::testSetstateArgumentChecking BTrees/tests/test_OOBTree.py::OOSetTest::testShortRepr BTrees/tests/test_OOBTree.py::OOSetTest::testSimpleExclusiveKeyRange BTrees/tests/test_OOBTree.py::OOSetTest::testSlicing BTrees/tests/test_OOBTree.py::OOSetTest::testUpdate BTrees/tests/test_OOBTree.py::OOSetTest::test_impl_pickle BTrees/tests/test_OOBTree.py::OOSetTest::test_isinstance_subclass BTrees/tests/test_OOBTree.py::OOSetTest::test_pickle_empty BTrees/tests/test_OOBTree.py::OOSetTest::test_pickle_subclass BTrees/tests/test_OOBTree.py::OOSetPyTest::testAddingOneSetsChanged BTrees/tests/test_OOBTree.py::OOSetPyTest::testBigInsert BTrees/tests/test_OOBTree.py::OOSetPyTest::testClear BTrees/tests/test_OOBTree.py::OOSetPyTest::testDuplicateInsert BTrees/tests/test_OOBTree.py::OOSetPyTest::testEmptyRangeSearches BTrees/tests/test_OOBTree.py::OOSetPyTest::testGetItem BTrees/tests/test_OOBTree.py::OOSetPyTest::testHasKeyFails BTrees/tests/test_OOBTree.py::OOSetPyTest::testInsert BTrees/tests/test_OOBTree.py::OOSetPyTest::testInsertReturnsValue BTrees/tests/test_OOBTree.py::OOSetPyTest::testIterator BTrees/tests/test_OOBTree.py::OOSetPyTest::testKeys BTrees/tests/test_OOBTree.py::OOSetPyTest::testLen BTrees/tests/test_OOBTree.py::OOSetPyTest::testMaxKeyMinKey BTrees/tests/test_OOBTree.py::OOSetPyTest::testRemoveFails BTrees/tests/test_OOBTree.py::OOSetPyTest::testRemoveInSmallSetSetsChanged BTrees/tests/test_OOBTree.py::OOSetPyTest::testRemoveSucceeds BTrees/tests/test_OOBTree.py::OOSetPyTest::testSetstateArgumentChecking BTrees/tests/test_OOBTree.py::OOSetPyTest::testShortRepr BTrees/tests/test_OOBTree.py::OOSetPyTest::testSimpleExclusiveKeyRange BTrees/tests/test_OOBTree.py::OOSetPyTest::testSlicing BTrees/tests/test_OOBTree.py::OOSetPyTest::testUpdate BTrees/tests/test_OOBTree.py::OOSetPyTest::test_impl_pickle BTrees/tests/test_OOBTree.py::OOSetPyTest::test_isinstance_subclass BTrees/tests/test_OOBTree.py::OOSetPyTest::test_pickle_empty BTrees/tests/test_OOBTree.py::OOSetPyTest::test_pickle_subclass BTrees/tests/test_OOBTree.py::OOBTreeTest::testAcceptDefaultComparisonOnGet BTrees/tests/test_OOBTree.py::OOBTreeTest::testAddTwoSetsChanged BTrees/tests/test_OOBTree.py::OOBTreeTest::testBadUpdateTupleSize BTrees/tests/test_OOBTree.py::OOBTreeTest::testClear BTrees/tests/test_OOBTree.py::OOBTreeTest::testDamagedIterator BTrees/tests/test_OOBTree.py::OOBTreeTest::testDeleteInvalidKeyRaisesKeyError BTrees/tests/test_OOBTree.py::OOBTreeTest::testDeleteNoChildrenWorks BTrees/tests/test_OOBTree.py::OOBTreeTest::testDeleteOneChildWorks BTrees/tests/test_OOBTree.py::OOBTreeTest::testDeleteRootWorks BTrees/tests/test_OOBTree.py::OOBTreeTest::testDeleteTwoChildrenInorderSuccessorWorks BTrees/tests/test_OOBTree.py::OOBTreeTest::testDeleteTwoChildrenNoInorderSuccessorWorks BTrees/tests/test_OOBTree.py::OOBTreeTest::testEmptyRangeSearches BTrees/tests/test_OOBTree.py::OOBTreeTest::testGetItemFails BTrees/tests/test_OOBTree.py::OOBTreeTest::testGetReturnsDefault BTrees/tests/test_OOBTree.py::OOBTreeTest::testHasKeyWorks BTrees/tests/test_OOBTree.py::OOBTreeTest::testIdentityTrumpsBrokenComparison BTrees/tests/test_OOBTree.py::OOBTreeTest::testInsertMethod BTrees/tests/test_OOBTree.py::OOBTreeTest::testItemsNegativeIndex BTrees/tests/test_OOBTree.py::OOBTreeTest::testItemsWorks BTrees/tests/test_OOBTree.py::OOBTreeTest::testIterators BTrees/tests/test_OOBTree.py::OOBTreeTest::testKeysNegativeIndex BTrees/tests/test_OOBTree.py::OOBTreeTest::testKeysWorks BTrees/tests/test_OOBTree.py::OOBTreeTest::testLen BTrees/tests/test_OOBTree.py::OOBTreeTest::testMaxKeyMinKey BTrees/tests/test_OOBTree.py::OOBTreeTest::testPathologicalLeftBranching BTrees/tests/test_OOBTree.py::OOBTreeTest::testPathologicalRangeSearch BTrees/tests/test_OOBTree.py::OOBTreeTest::testPathologicalRightBranching BTrees/tests/test_OOBTree.py::OOBTreeTest::testPop BTrees/tests/test_OOBTree.py::OOBTreeTest::testRandomDeletes BTrees/tests/test_OOBTree.py::OOBTreeTest::testRandomNonOverlappingInserts BTrees/tests/test_OOBTree.py::OOBTreeTest::testRandomOverlappingInserts BTrees/tests/test_OOBTree.py::OOBTreeTest::testRangeSearchAfterRandomInsert BTrees/tests/test_OOBTree.py::OOBTreeTest::testRangeSearchAfterSequentialInsert BTrees/tests/test_OOBTree.py::OOBTreeTest::testRangedIterators BTrees/tests/test_OOBTree.py::OOBTreeTest::testRejectDefaultComparisonOnSet BTrees/tests/test_OOBTree.py::OOBTreeTest::testRemoveInSmallMapSetsChanged BTrees/tests/test_OOBTree.py::OOBTreeTest::testReplaceWorks BTrees/tests/test_OOBTree.py::OOBTreeTest::testRepr BTrees/tests/test_OOBTree.py::OOBTreeTest::testSetItemGetItemWorks BTrees/tests/test_OOBTree.py::OOBTreeTest::testSetdefault BTrees/tests/test_OOBTree.py::OOBTreeTest::testSetstateArgumentChecking BTrees/tests/test_OOBTree.py::OOBTreeTest::testShortRepr BTrees/tests/test_OOBTree.py::OOBTreeTest::testSimpleExclusivRanges BTrees/tests/test_OOBTree.py::OOBTreeTest::testSimpleExclusiveKeyRange BTrees/tests/test_OOBTree.py::OOBTreeTest::testSlicing BTrees/tests/test_OOBTree.py::OOBTreeTest::testSuccessorChildParentRewriteExerciseCase BTrees/tests/test_OOBTree.py::OOBTreeTest::testTargetedDeletes BTrees/tests/test_OOBTree.py::OOBTreeTest::testUnpickleNoneKey BTrees/tests/test_OOBTree.py::OOBTreeTest::testUpdate BTrees/tests/test_OOBTree.py::OOBTreeTest::testUpdateFromPersistentMapping BTrees/tests/test_OOBTree.py::OOBTreeTest::testValuesNegativeIndex BTrees/tests/test_OOBTree.py::OOBTreeTest::testValuesWorks BTrees/tests/test_OOBTree.py::OOBTreeTest::testValuesWorks1 BTrees/tests/test_OOBTree.py::OOBTreeTest::test_byValue BTrees/tests/test_OOBTree.py::OOBTreeTest::test_impl_pickle BTrees/tests/test_OOBTree.py::OOBTreeTest::test_isinstance_subclass BTrees/tests/test_OOBTree.py::OOBTreeTest::test_legacy_py_pickle BTrees/tests/test_OOBTree.py::OOBTreeTest::test_pickle_empty BTrees/tests/test_OOBTree.py::OOBTreeTest::test_pickle_subclass BTrees/tests/test_OOBTree.py::OOBTreePyTest::testAcceptDefaultComparisonOnGet BTrees/tests/test_OOBTree.py::OOBTreePyTest::testAddTwoSetsChanged BTrees/tests/test_OOBTree.py::OOBTreePyTest::testBadUpdateTupleSize BTrees/tests/test_OOBTree.py::OOBTreePyTest::testClear BTrees/tests/test_OOBTree.py::OOBTreePyTest::testDamagedIterator BTrees/tests/test_OOBTree.py::OOBTreePyTest::testDeleteInvalidKeyRaisesKeyError BTrees/tests/test_OOBTree.py::OOBTreePyTest::testDeleteNoChildrenWorks BTrees/tests/test_OOBTree.py::OOBTreePyTest::testDeleteOneChildWorks BTrees/tests/test_OOBTree.py::OOBTreePyTest::testDeleteRootWorks BTrees/tests/test_OOBTree.py::OOBTreePyTest::testDeleteTwoChildrenInorderSuccessorWorks BTrees/tests/test_OOBTree.py::OOBTreePyTest::testDeleteTwoChildrenNoInorderSuccessorWorks BTrees/tests/test_OOBTree.py::OOBTreePyTest::testEmptyRangeSearches BTrees/tests/test_OOBTree.py::OOBTreePyTest::testGetItemFails BTrees/tests/test_OOBTree.py::OOBTreePyTest::testGetReturnsDefault BTrees/tests/test_OOBTree.py::OOBTreePyTest::testHasKeyWorks BTrees/tests/test_OOBTree.py::OOBTreePyTest::testInsertMethod BTrees/tests/test_OOBTree.py::OOBTreePyTest::testItemsNegativeIndex BTrees/tests/test_OOBTree.py::OOBTreePyTest::testItemsWorks BTrees/tests/test_OOBTree.py::OOBTreePyTest::testIterators BTrees/tests/test_OOBTree.py::OOBTreePyTest::testKeysNegativeIndex BTrees/tests/test_OOBTree.py::OOBTreePyTest::testKeysWorks BTrees/tests/test_OOBTree.py::OOBTreePyTest::testLen BTrees/tests/test_OOBTree.py::OOBTreePyTest::testMaxKeyMinKey BTrees/tests/test_OOBTree.py::OOBTreePyTest::testPathologicalLeftBranching BTrees/tests/test_OOBTree.py::OOBTreePyTest::testPathologicalRangeSearch BTrees/tests/test_OOBTree.py::OOBTreePyTest::testPathologicalRightBranching BTrees/tests/test_OOBTree.py::OOBTreePyTest::testPop BTrees/tests/test_OOBTree.py::OOBTreePyTest::testRandomDeletes BTrees/tests/test_OOBTree.py::OOBTreePyTest::testRandomNonOverlappingInserts BTrees/tests/test_OOBTree.py::OOBTreePyTest::testRandomOverlappingInserts BTrees/tests/test_OOBTree.py::OOBTreePyTest::testRangeSearchAfterRandomInsert BTrees/tests/test_OOBTree.py::OOBTreePyTest::testRangeSearchAfterSequentialInsert BTrees/tests/test_OOBTree.py::OOBTreePyTest::testRangedIterators BTrees/tests/test_OOBTree.py::OOBTreePyTest::testRejectDefaultComparisonOnSet BTrees/tests/test_OOBTree.py::OOBTreePyTest::testRemoveInSmallMapSetsChanged BTrees/tests/test_OOBTree.py::OOBTreePyTest::testReplaceWorks BTrees/tests/test_OOBTree.py::OOBTreePyTest::testRepr BTrees/tests/test_OOBTree.py::OOBTreePyTest::testSetItemGetItemWorks BTrees/tests/test_OOBTree.py::OOBTreePyTest::testSetdefault BTrees/tests/test_OOBTree.py::OOBTreePyTest::testSetstateArgumentChecking BTrees/tests/test_OOBTree.py::OOBTreePyTest::testShortRepr BTrees/tests/test_OOBTree.py::OOBTreePyTest::testSimpleExclusivRanges BTrees/tests/test_OOBTree.py::OOBTreePyTest::testSimpleExclusiveKeyRange BTrees/tests/test_OOBTree.py::OOBTreePyTest::testSlicing BTrees/tests/test_OOBTree.py::OOBTreePyTest::testSuccessorChildParentRewriteExerciseCase BTrees/tests/test_OOBTree.py::OOBTreePyTest::testTargetedDeletes BTrees/tests/test_OOBTree.py::OOBTreePyTest::testUnpickleNoneKey BTrees/tests/test_OOBTree.py::OOBTreePyTest::testUpdate BTrees/tests/test_OOBTree.py::OOBTreePyTest::testUpdateFromPersistentMapping BTrees/tests/test_OOBTree.py::OOBTreePyTest::testValuesNegativeIndex BTrees/tests/test_OOBTree.py::OOBTreePyTest::testValuesWorks BTrees/tests/test_OOBTree.py::OOBTreePyTest::testValuesWorks1 BTrees/tests/test_OOBTree.py::OOBTreePyTest::test_byValue BTrees/tests/test_OOBTree.py::OOBTreePyTest::test_impl_pickle BTrees/tests/test_OOBTree.py::OOBTreePyTest::test_isinstance_subclass BTrees/tests/test_OOBTree.py::OOBTreePyTest::test_legacy_py_pickle BTrees/tests/test_OOBTree.py::OOBTreePyTest::test_pickle_empty BTrees/tests/test_OOBTree.py::OOBTreePyTest::test_pickle_subclass BTrees/tests/test_OOBTree.py::PureOO::testDifference BTrees/tests/test_OOBTree.py::PureOO::testEmptyDifference BTrees/tests/test_OOBTree.py::PureOO::testEmptyIntersection BTrees/tests/test_OOBTree.py::PureOO::testEmptyUnion BTrees/tests/test_OOBTree.py::PureOO::testIntersection BTrees/tests/test_OOBTree.py::PureOO::testLargerInputs BTrees/tests/test_OOBTree.py::PureOO::testNone BTrees/tests/test_OOBTree.py::PureOO::testUnion BTrees/tests/test_OOBTree.py::PureOOPy::testDifference BTrees/tests/test_OOBTree.py::PureOOPy::testEmptyDifference BTrees/tests/test_OOBTree.py::PureOOPy::testEmptyIntersection BTrees/tests/test_OOBTree.py::PureOOPy::testEmptyUnion BTrees/tests/test_OOBTree.py::PureOOPy::testIntersection BTrees/tests/test_OOBTree.py::PureOOPy::testLargerInputs BTrees/tests/test_OOBTree.py::PureOOPy::testNone BTrees/tests/test_OOBTree.py::PureOOPy::testUnion BTrees/tests/test_OOBTree.py::OOBucketConflictTests::testFailMergeDelete BTrees/tests/test_OOBTree.py::OOBucketConflictTests::testFailMergeDeleteAndUpdate BTrees/tests/test_OOBTree.py::OOBucketConflictTests::testFailMergeEmptyAndFill BTrees/tests/test_OOBTree.py::OOBucketConflictTests::testFailMergeInsert BTrees/tests/test_OOBTree.py::OOBucketConflictTests::testFailMergeUpdate BTrees/tests/test_OOBTree.py::OOBucketConflictTests::testMergeDelete BTrees/tests/test_OOBTree.py::OOBucketConflictTests::testMergeDeleteAndUpdate BTrees/tests/test_OOBTree.py::OOBucketConflictTests::testMergeEmpty BTrees/tests/test_OOBTree.py::OOBucketConflictTests::testMergeInserts BTrees/tests/test_OOBTree.py::OOBucketConflictTests::testMergeInsertsFromEmpty BTrees/tests/test_OOBTree.py::OOBucketConflictTests::testMergeUpdate BTrees/tests/test_OOBTree.py::OOBucketPyConflictTests::testFailMergeDelete BTrees/tests/test_OOBTree.py::OOBucketPyConflictTests::testFailMergeDeleteAndUpdate BTrees/tests/test_OOBTree.py::OOBucketPyConflictTests::testFailMergeEmptyAndFill BTrees/tests/test_OOBTree.py::OOBucketPyConflictTests::testFailMergeInsert BTrees/tests/test_OOBTree.py::OOBucketPyConflictTests::testFailMergeUpdate BTrees/tests/test_OOBTree.py::OOBucketPyConflictTests::testMergeDelete BTrees/tests/test_OOBTree.py::OOBucketPyConflictTests::testMergeDeleteAndUpdate BTrees/tests/test_OOBTree.py::OOBucketPyConflictTests::testMergeEmpty BTrees/tests/test_OOBTree.py::OOBucketPyConflictTests::testMergeInserts BTrees/tests/test_OOBTree.py::OOBucketPyConflictTests::testMergeInsertsFromEmpty BTrees/tests/test_OOBTree.py::OOBucketPyConflictTests::testMergeUpdate BTrees/tests/test_OOBTree.py::OOSetConflictTests::testFailMergeDelete BTrees/tests/test_OOBTree.py::OOSetConflictTests::testFailMergeEmptyAndFill BTrees/tests/test_OOBTree.py::OOSetConflictTests::testFailMergeInsert BTrees/tests/test_OOBTree.py::OOSetConflictTests::testMergeDelete BTrees/tests/test_OOBTree.py::OOSetConflictTests::testMergeEmpty BTrees/tests/test_OOBTree.py::OOSetConflictTests::testMergeInserts BTrees/tests/test_OOBTree.py::OOSetConflictTests::testMergeInsertsFromEmpty BTrees/tests/test_OOBTree.py::OOSetPyConflictTests::testFailMergeDelete BTrees/tests/test_OOBTree.py::OOSetPyConflictTests::testFailMergeEmptyAndFill BTrees/tests/test_OOBTree.py::OOSetPyConflictTests::testFailMergeInsert BTrees/tests/test_OOBTree.py::OOSetPyConflictTests::testMergeDelete BTrees/tests/test_OOBTree.py::OOSetPyConflictTests::testMergeEmpty BTrees/tests/test_OOBTree.py::OOSetPyConflictTests::testMergeInserts BTrees/tests/test_OOBTree.py::OOSetPyConflictTests::testMergeInsertsFromEmpty BTrees/tests/test_OOBTree.py::OOBTreeConflictTests::testFailMergeDelete BTrees/tests/test_OOBTree.py::OOBTreeConflictTests::testFailMergeDeleteAndUpdate BTrees/tests/test_OOBTree.py::OOBTreeConflictTests::testFailMergeEmptyAndFill BTrees/tests/test_OOBTree.py::OOBTreeConflictTests::testFailMergeInsert BTrees/tests/test_OOBTree.py::OOBTreeConflictTests::testFailMergeUpdate BTrees/tests/test_OOBTree.py::OOBTreeConflictTests::testMergeDelete BTrees/tests/test_OOBTree.py::OOBTreeConflictTests::testMergeDeleteAndUpdate BTrees/tests/test_OOBTree.py::OOBTreeConflictTests::testMergeEmpty BTrees/tests/test_OOBTree.py::OOBTreeConflictTests::testMergeInserts BTrees/tests/test_OOBTree.py::OOBTreeConflictTests::testMergeInsertsFromEmpty BTrees/tests/test_OOBTree.py::OOBTreeConflictTests::testMergeUpdate BTrees/tests/test_OOBTree.py::OOBTreePyConflictTests::testFailMergeDelete BTrees/tests/test_OOBTree.py::OOBTreePyConflictTests::testFailMergeDeleteAndUpdate BTrees/tests/test_OOBTree.py::OOBTreePyConflictTests::testFailMergeEmptyAndFill BTrees/tests/test_OOBTree.py::OOBTreePyConflictTests::testFailMergeInsert BTrees/tests/test_OOBTree.py::OOBTreePyConflictTests::testFailMergeUpdate BTrees/tests/test_OOBTree.py::OOBTreePyConflictTests::testMergeDelete BTrees/tests/test_OOBTree.py::OOBTreePyConflictTests::testMergeDeleteAndUpdate BTrees/tests/test_OOBTree.py::OOBTreePyConflictTests::testMergeEmpty BTrees/tests/test_OOBTree.py::OOBTreePyConflictTests::testMergeInserts BTrees/tests/test_OOBTree.py::OOBTreePyConflictTests::testMergeInsertsFromEmpty BTrees/tests/test_OOBTree.py::OOBTreePyConflictTests::testMergeUpdate BTrees/tests/test_OOBTree.py::OOTreeSetConflictTests::testFailMergeDelete BTrees/tests/test_OOBTree.py::OOTreeSetConflictTests::testFailMergeEmptyAndFill BTrees/tests/test_OOBTree.py::OOTreeSetConflictTests::testFailMergeInsert BTrees/tests/test_OOBTree.py::OOTreeSetConflictTests::testMergeDelete BTrees/tests/test_OOBTree.py::OOTreeSetConflictTests::testMergeEmpty BTrees/tests/test_OOBTree.py::OOTreeSetConflictTests::testMergeInserts BTrees/tests/test_OOBTree.py::OOTreeSetConflictTests::testMergeInsertsFromEmpty BTrees/tests/test_OOBTree.py::OOTreeSetPyConflictTests::testFailMergeDelete BTrees/tests/test_OOBTree.py::OOTreeSetPyConflictTests::testFailMergeEmptyAndFill BTrees/tests/test_OOBTree.py::OOTreeSetPyConflictTests::testFailMergeInsert BTrees/tests/test_OOBTree.py::OOTreeSetPyConflictTests::testMergeDelete BTrees/tests/test_OOBTree.py::OOTreeSetPyConflictTests::testMergeEmpty BTrees/tests/test_OOBTree.py::OOTreeSetPyConflictTests::testMergeInserts BTrees/tests/test_OOBTree.py::OOTreeSetPyConflictTests::testMergeInsertsFromEmpty BTrees/tests/test_OOBTree.py::OOModuleTest::testFamily BTrees/tests/test_OOBTree.py::OOModuleTest::testModuleProvides BTrees/tests/test_OOBTree.py::OOModuleTest::testNames BTrees/tests/test_OOBTree.py::OOModuleTest::test_multiunion_not_present BTrees/tests/test_OOBTree.py::OOModuleTest::test_weightedIntersection_not_present BTrees/tests/test_OOBTree.py::OOModuleTest::test_weightedUnion_not_present BTrees/tests/test_OOBTree.py::test_suite