docs: public static Class findFirstImplementationOfInterface(Class interfaceType, Set<Class<?>> types) {
          if (interfaceType == null) {
              throw new IllegalArgumentException("An interface type must be provided.");
          } else if (!interfaceType.isInterface()) {
              throw new IllegalArgumentException("The interface type must represent an interface.");
          }
  
          if (types == null) {
              throw new IllegalArgumentException("The set of types to search through must be provided.");
          }
  
          for (Class<?> type : types) {
              boolean isInterface = type.isInterface();
              boolean isAbstract = Modifier.isAbstract(type.getModifiers());
              boolean isAssignable = interfaceType.isAssignableFrom(type);
              if (!isInterface && !isAbstract && isAssignable) {
                  return type;
              }
          }
  
          return null;
      }