code: private void notifyListeners(LifecycleState oldState, LifecycleState newState)
    {
      notifyWait();
      
      // initial must be outside synchronized to avoid any blocking
      // for fail-safe shutdown
      if (_listeners == null) {
        return;
      }
      
      ArrayList<LifecycleListener> listeners = null;
      
      synchronized (this) {
        notifyAll();
  
        if (_listeners != null) {
          for (int i = 0; i < _listeners.size(); i++) {
            LifecycleListener listener = _listeners.get(i).get();
  
            if (listener != null) {
              if (listeners == null) {
                listeners = new ArrayList<LifecycleListener>();
              }
              
              listeners.add(listener);
            }
            else {
              _listeners.remove(i);
              i--;
            }
          }
        }
      }
  
      if (listeners != null) {
        for (LifecycleListener listener : listeners) {
          listener.lifecycleEvent(oldState, newState);
        }
      }
    }
docs: Returns the listeners.