docs: public <T> void removeListener(final Listener<T> listener, final Object instance) {
  		final ListenerInstancePair<T> pair = new ListenerInstancePair<T>(listener, instance);
  		this.listeners.remove(pair);
  		for (final List<ListenerInstancePair<?>> entry : this.cachedListeners.values()) {
  			entry.remove(pair);
  		}
  	}