code: public static LinkedHashSet<Class<?>> getInterfaceImplementationsInPackages(Class<?> interfaze, Set<String> packageNames, boolean recursive) throws ReflectionException {
          Validate.notNull(interfaze);
          Validate.notNull(packageNames);
  
          if (!interfaze.isInterface()) {
              throw new ParameterException("Parameter is not an interface");
          }
  
          LinkedHashSet<Class<?>> classes = new LinkedHashSet<>();
  
          for (String packageName : packageNames) {
              classes.addAll(getInterfaceImplementationsInPackage(interfaze, packageName, recursive));
          }
          return classes;
      }
docs: The same method as
  {@link ReflectionUtils#getInterfaceImplementationsInPackage(Class, String, boolean)},
  but with the possibility to search in multiple packages. Since the result
  is returned as a {@link LinkedHashSet}, there won't be any duplicates.
  
  @param interfaze Interface class.
  @param packageNames Set of package names.
  @param recursive <code>true</code> if subpackages should be considered,
  too.
  @return {@link LinkedHashSet} of implementations of a given interface.
  @throws ReflectionException