code: public Signal register(TimerContext context)
      {
          assert context != null;
          RegisteredSignal signal = new TimedSignal(context);
          queue.add(signal);
          return signal;
      }
docs: The calling thread MUST be the thread that uses the signal.
  If the Signal is waited on, context.stop() will be called when the wait times out, the Signal is signalled,
  or the waiting thread is interrupted.
  @return