code: @SuppressWarnings("unchecked")
      private void prepareListeners() {
          if (preparedListeners != null && preparedUnspecifiedListeners != null) {
              // Already created, skip
              return;
          }
          preparedListeners = new ConcurrentHashMap<>();
          Stream<Class<? extends GloballyAttachableListener>> eventTypes = Stream.concat(
                  listeners.keySet().stream(),
                  Stream.concat(listenerSuppliers.keySet().stream(),
                          listenerFunctions.keySet().stream())
          ).distinct();
          eventTypes.forEach(type -> {
              ArrayList<Function<DiscordApi, GloballyAttachableListener>> typeListenerFunctions = new ArrayList<>();
              listeners.getOrDefault(type, Collections.emptyList()).forEach(
                      listener -> typeListenerFunctions.add(api -> listener)
              );
              listenerSuppliers.getOrDefault(type, Collections.emptyList()).forEach(
                      supplier -> typeListenerFunctions.add(api -> supplier.get())
              );
              listenerFunctions.getOrDefault(type, Collections.emptyList()).forEach(
                      function -> typeListenerFunctions.add((Function<DiscordApi, GloballyAttachableListener>) function)
              );
              preparedListeners.put(type, typeListenerFunctions);
          });
          // Unspecified Listeners
          preparedUnspecifiedListeners = new CopyOnWriteArrayList<>(unspecifiedListenerFunctions);
          unspecifiedListenerSuppliers.forEach(supplier -> preparedUnspecifiedListeners.add((api) -> supplier.get()));
          unspecifiedListeners.forEach(listener -> preparedUnspecifiedListeners.add((api) -> listener));
      }
docs: Compile pre-registered listeners into proper collections for DiscordApi creation.