code: @NonNull
      public ListenerToken addChangeListener(Executor executor, @NonNull DatabaseChangeListener listener) {
          if (listener == null) { throw new IllegalArgumentException("listener cannot be null."); }
  
          synchronized (lock) {
              mustBeOpen();
              return addDatabaseChangeListener(executor, listener);
          }
      }
docs: Set the given DatabaseChangeListener to the this database with an executor on which the
  the changes will be posted to the listener.
  
  @param listener