docs: public void free()
      {
          if (m_bKeepAlive)
          {
              m_bKeepAlive = false; // Don't stay alive
              m_bThreadSuspended = false;   // Unsuspend this puppy
              try {
                  this.notify();          // If you're waiting, continue (and the thread will die)
              } catch (IllegalMonitorStateException ex) {
                  // Ignore
              }
          }
          super.free();
      }