log.info("handling ref");
   public Delivery handle(DeliveryObserver sender, MessageReference ref, Transaction tx)   {      if (!active)      {         return null;      }           checkClosed();            Future result = new Future();      if (tx == null)      {                  try         {            // Instead of executing directly, we add the handle request to the event queue.            // Since remoting doesn't currently handle non blocking IO, we still have to wait for the            // result, but when remoting does, we can use a full SEDA approach and get even better            // throughput.            this.executor.execute(new HandleRunnable(result, sender, ref, true));         }         catch (InterruptedException e)         {            log.warn("Thread interrupted", e);         }            return (Delivery)result.getResult();      }      else      {         return handleInternal(sender, ref, tx, true, false);      }   }  