code: private <L, E> void interact(Class<L> type, Interaction<L, E> interaction,
                                 Interactor<?> current, E argument) {
      if (current == null)
        return;
      interact(type, interaction, current.next, argument);
      if (current.listenerType == type) {
        @SuppressWarnings("unchecked") L listener = (L)current.listener;
        interaction.interact(listener, argument);
      }
    }
docs: neither affects, nor conflicts with, the current dispatch