private static Map<Class<?>, Set<RegisteredConversion>> collectConversions() {
      final Map<Class<?>, Set<RegisteredConversion>> collected = new ConcurrentHashMap<>();
      for (final Provider provider : PROVIDERS) {
        final @NotNull Key id = requireNonNull(provider.id(), () -> "ID of provider " + provider + " is null");
        for (final Conversion<?, ?> conv : provider.conversions()) {
          collected.computeIfAbsent(conv.source(), $ -> ConcurrentHashMap.newKeySet()).add(new RegisteredConversion(id, conv));
        }
      }

      for (final Map.Entry<Class<?>, Set<RegisteredConversion>> entry : collected.entrySet()) {
        entry.setValue(Collections.unmodifiableSet(entry.getValue()));
      }

      return new ConcurrentHashMap<>(collected);
    }
Perform the actual conversion.

@param key the key used for the data holder
@param input the source type
@return a data holder of the destination type
@since 4.17.0
api/src/main/java/net/kyori/adventure/text/event/DataComponentValueConverterRegistry.java