guava/src/com/google/common/util/concurrent/ListenerCallQueue.java
public void addListener(L listener, Executor executor) {
    checkNotNull(listener, "listener");
    checkNotNull(executor, "executor");
    listeners.add(new PerListenerQueue<>(listener, executor));
  }
public void addListener(L listener, Executor executor) {
    checkNotNull(listener, "listener");
    checkNotNull(executor, "executor");
    listeners.add(new PerListenerQueue<>(listener, executor));
  }
Adds a listener that will be called using the given executor when events are later {@link
#enqueue enqueued} and {@link #dispatch dispatched}.