def METHOD_NAME(self, c):
    self._failed = "No error message set or cleared."
    obj = c()
    e1 = threading.Event()
    e2 = threading.Event()
    def f1():
        obj.x = 'foo'
        obj.y = 'bar'
        del obj.y
        e1.set()
        e2.wait()
    def f2():
        try:
            foo = obj.x
        except AttributeError:
            # This is expected -- we haven't set obj.x in this thread yet!
            self._failed = ""  # passed
        else:
            self._failed = ('Incorrectly got value %r from class %r\n' %
                            (foo, c))
            sys.stderr.write(self._failed)
    t1 = threading.Thread(target=f1)
    t1.start()
    e1.wait()
    t2 = threading.Thread(target=f2)
    t2.start()
    t2.join()
    # The test is done; just let t1 know it can exit, and wait for it.
    e2.set()
    t1.join()
    self.assertFalse(self._failed, self._failed)