def METHOD_NAME(self, thread):
    assert self.notify.debugCall()
    # pass in a TaskThread. TaskThreaded will take over ownership and
    # cleanup responsibilities
    thread._init(self)
    thread.setUp()
    if thread.isFinished():
        thread._destroy()
    else:
        if not self.__threaded:
            while not thread.isFinished():
                thread.run()
            thread._destroy()
        else:
            assert not thread in self.__threads
            self.__threads.add(thread)
            taskName = ('%s-ThreadedTask-%s-%s' %
                        (self.__name, thread.__class__.__name__,
                         TaskThreaded._Serial.next()))
            assert taskName not in self.__taskNames
            self.__taskNames.add(taskName)
            self.__threads.add(thread)
            taskMgr.add(Functor(self._doThreadCallback, thread, taskName),
                        taskName)