Some more test now pass.
diff --git a/BROKEN b/BROKEN
index 82820cd..4615d6d 100644
--- a/BROKEN
+++ b/BROKEN
@@ -1,4 +1,3 @@
     test_bsddb test_bsddb3 test_compile test_dumbdbm
     test_importhooks test_iter test_iterlen test_minidom test_mutants
-    test_os test_pickletools test_plistlib test_richcmp test_shelve
-    test_unittest test_userdict
+    test_os test_plistlib
diff --git a/Lib/UserDict.py b/Lib/UserDict.py
index 7570cef..91508d8 100644
--- a/Lib/UserDict.py
+++ b/Lib/UserDict.py
@@ -117,7 +117,7 @@
     def items(self):
         return list(self.iteritems())
     def clear(self):
-        for key in self.keys():
+        for key in list(self.iterkeys()):
             del self[key]
     def setdefault(self, key, default=None):
         try:
diff --git a/Lib/test/test_richcmp.py b/Lib/test/test_richcmp.py
index 72a6de8..99ddc30 100644
--- a/Lib/test/test_richcmp.py
+++ b/Lib/test/test_richcmp.py
@@ -265,7 +265,7 @@
         imag1a = {}
         for i in range(50):
             imag1a[random.randrange(100)*1j] = random.randrange(100)*1j
-        items = imag1a.items()
+        items = list(imag1a.items())
         random.shuffle(items)
         imag1b = {}
         for k, v in items: