void (Class<?> superclass, Class<?>[] interfaces, List<Method> methods, List<Method> interfaceMethods, Set forcePublic) { ReflectUtils.addAllMethods(superclass, methods); List<Method> target = (interfaceMethods != null) ? interfaceMethods : methods; if (interfaces != null) { for (Class<?> anInterface : interfaces) { if (anInterface != Factory.class) { ReflectUtils.addAllMethods(anInterface, target); } } } if (interfaceMethods != null) { if (forcePublic != null) { forcePublic.addAll(MethodWrapper.createSet(interfaceMethods)); } methods.addAll(interfaceMethods); } CollectionUtils.filter(methods, new DuplicatesPredicate()); CollectionUtils.filter(methods, new RejectModifierPredicate(Constants.ACC_STATIC | Constants.ACC_FINAL)); CollectionUtils.filter(methods, new VisibilityPredicate(superclass, true)); }