@Override
  public final void stop() {
    boolean cancelled = false;
    synchronized (getLock()) {
      super.stop();
      if (tryCancel()) {
        cancelled = true;
      }
    }
    if (cancelled) {
      onStop();
    }
  }
@Override
  public final void stop()