public static PackageScanner create() { for (int i = 0; i < PACKAGE_SCANNERS.size(); i++) { Class<? extends PackageScanner> scannerClass = PACKAGE_SCANNERS.get(i); PackageScanner scanner = ReflectionUtils.invokeConstructor(scannerClass); String packageName = PackageScannerFactory.class.getPackage().getName(); Sequence<String> test = scanner.getPackageClasses(packageName, ClassesListerOptions.DEFAULT); if (!test.isEmpty()) { if (i > 0) { logger.debug( "Using " + scannerClass.getSimpleName() + "(previously did not work: " + classList(PACKAGE_SCANNERS.subList(0, i)) + ")"); } return scanner; } } logger.error( "No working scanner " + PackageScanner.class.getSimpleName() + " found, " + "returning dummy (did not work: " + classList(PACKAGE_SCANNERS) + ")"); return new NullPackageScanner(); }