docs: def from_thread(cls,thread):
          """Convert a vanilla thread object into an instance of this class.
  
          This method "upgrades" a vanilla thread object to an instance of this
          extended class.  You might need to call this if you obtain a reference
          to a thread by some means other than (a) creating it, or (b) from the 
          methods of the threading2 module.
          """
          new_classes = []
          for new_cls in cls.__mro__:
              if new_cls not in thread.__class__.__mro__:
                  new_classes.append(new_cls)
          if isinstance(thread,cls):
              pass
          elif issubclass(cls,thread.__class__):
              thread.__class__ = cls
          else:
              class UpgradedThread(thread.__class__,cls):
                  pass
              thread.__class__ = UpgradedThread
          for new_cls in new_classes:
              if hasattr(new_cls,"_upgrade_thread"):
                  new_cls._upgrade_thread(thread)
          return thread