private static List<Class<?>> filterClasses(Classes appClasses, String packageName, Pattern regex, Predicate<Class<?>> filter, Class<? extends Annotation> annotated) { List<Class<?>> matching = U.list(); for (Entry<String, Class<?>> e : appClasses.entrySet()) { Class<?> cls = e.getValue(); String pkg = cls.getPackage() != null ? cls.getPackage().getName() : ""; if (U.isEmpty(packageName) || pkg.startsWith(packageName + ".") || pkg.equals(packageName)) { if (ClasspathUtil.classMatches(cls, filter, annotated, regex)) { matching.add(cls); } } } return matching; }