code: public void registerDisposeListener(Provider.DisposeListener disposeListener) {
          if (disposeListeners == null) {
              disposeListeners = new CopyOnWriteArrayList<>();
          }
          disposeListeners.add(disposeListener);
      }
docs: Register {@link Provider.DisposeListener} which will be called when either
  <ul>
  <li>The provider doesn't have a scope instances and a provided instance is dereferenced</li>
  <li>The provider has a scope instances and the provider is dereferenced with 0 reference count</li>
  </ul>
  @param disposeListener The listener