code: public static <K, V> RemovalListener<K, V> asynchronous(
        final RemovalListener<K, V> listener, final Executor executor) {
      checkNotNull(listener);
      checkNotNull(executor);
      return new RemovalListener<K, V>() {
        @Override
        public void onRemoval(final RemovalNotification<K, V> notification) {
          executor.execute(
              new Runnable() {
                @Override
                public void run() {
                  listener.onRemoval(notification);
                }
              });
        }
      };
    }
docs: Returns a {@code RemovalListener} which processes all eviction notifications using {@code
  executor}.
  
  @param listener the backing listener
  @param executor the executor with which removal notifications are asynchronously executed