diff --git a/Lib/test/crashers/iter.py b/Lib/test/crashers/iter.py
new file mode 100644
index 0000000..081dcbc
--- /dev/null
+++ b/Lib/test/crashers/iter.py
@@ -0,0 +1,53 @@
+# Calls to PyIter_Next, or direct calls to tp_iternext, on an object
+# which might no longer be an iterable because its 'next' method was
+# removed.  These are all variants of Issue3720.
+
+"""
+Run this script with an argument between 1 and <N> to test for
+different crashes.
+"""
+N = 8
+
+import sys
+
+class Foo(object):
+    def __iter__(self):
+        return self
+    def next(self):
+        del Foo.next
+        return (1, 2)
+
+def case1():
+    list(enumerate(Foo()))
+
+def case2():
+    x, y = Foo()
+
+def case3():
+    filter(None, Foo())
+
+def case4():
+    map(None, Foo(), Foo())
+
+def case5():
+    max(Foo())
+
+def case6():
+    sum(Foo(), ())
+
+def case7():
+    dict(Foo())
+
+def case8():
+    sys.stdout.writelines(Foo())
+
+# etc...
+
+
+if __name__ == '__main__':
+    if len(sys.argv) < 2:
+        print __doc__.replace('<N>', str(N))
+    else:
+        n = int(sys.argv[1])
+        func = globals()['case%d' % n]
+        func()
