code: public synchronized void addWeakListener(L listener) {
      Preconditions.checkNotNull(listener);
  
      _log.info("Adding a weak listener " + listener);
      _autoListeners.put(listener, null);
    }
docs: Only weak references are stored for weak listeners. They will be removed from the dispatcher
  automatically, once the listener objects are GCed. Note that weak listeners cannot be removed
  explicitly.