code: public <R extends BProgramRunnerListener> R addListener(R aListener) {
          listeners.add(aListener);
          return aListener;
      }
docs: Adds a listener to the BProgram.
  @param <R> Actual type of listener.
  @param aListener the listener to add.
  @return The added listener, to allow call chaining.