public void run() {
    while (true) {
      DelayedSignal s = senderObject.getNextDelayedSignal();
      if (s == null) return;

      org.jdns.xtuml.runtime.Object target = s.getTarget();
      System.out.println(target.getObjectId() + " delivered delayed signal");
      synchronized (target) {
        Integer signalId = s.getSignalId();
        Integer targetObjectId = target.getObjectId();
        if (target.isActive()) {
          target.addSignal(s);
        } else {
          /*
           * All interpreters have stopped,
           * signal shouldn't be deliviered.
           */
          context.getDebugObject().delEntity();
        }
      }
    }
  }