code: @Override
     public void removeListener(TickListener listener) {
        super.removeListener(listener);
  
        if (listeners.isEmpty() && !keepAlive)
           stop();
     }
docs: If the last tick listener has been removed from this source, it shuts
  itself down via {@link #stop()}, if it's not set to keepAlive mode using
  {@link #setKeepAlive(boolean)}.