@Override
 public void run() {
   ClassLoader originalLoader = Classes.setTCCL(_loader);
   try {
     _session.getStateful().fireUntilHalt();
   } finally {
     try {
       _handler.disposeStatefulSession();
     } finally {
       Classes.setTCCL(originalLoader);
     }
   }
 }
 private Thread startThread() {
   Thread thread = new Thread(this);
   String name =
       new StringBuilder()
           .append(_handler.getClass().getSimpleName())
           .append(':')
           .append(getClass().getSimpleName())
           .append(':')
           .append(FIRE_UNTIL_HALT_COUNT.incrementAndGet())
           .toString();
   thread.setName(name);
   thread.setDaemon(true);
   thread.start();
   return thread;
 }
 @Override
 public void dispose() {
   _handler._fireUntilHaltThread = null;
 }