def METHOD_NAME(self):
    # http://bugs.python.org/issue6990
    class Local(self._local):
        pass
    locals = None
    passed = False
    e1 = threading.Event()
    e2 = threading.Event()
    def f():
        nonlocal passed
        # 1) Involve Local in a cycle
        cycle = [Local()]
        cycle.append(cycle)
        cycle[0].foo = 'bar'
        # 2) GC the cycle (triggers threadmodule.c::local_clear
        # before local_dealloc)
        del cycle
        gc.collect()
        e1.set()
        e2.wait()
        # 4) New Locals should be empty
        passed = all(not hasattr(local, 'foo') for local in locals)
    t = threading.Thread(target=f)
    t.start()
    e1.wait()
    # 3) New Locals should recycle the original's address. Creating
    # them in the thread overwrites the thread state and avoids the
    # bug
    locals = [Local() for i in range(10)]
    e2.set()
    t.join()
    self.assertTrue(passed)