code: public <K2 extends K, E2 extends E> BlockingListMaker<K2, E2> listenForElements(Listener<K2, E2> listener) {
          @SuppressWarnings("unchecked")
          BlockingListMaker<K2, E2> stricterThis = (BlockingListMaker<K2, E2>) this;
          stricterThis.setListener(listener);
          return stricterThis;
      }
docs: Define the {@link Listener} to use to get a callback when an element becomes available.