/** * Collects all realizing classes that implement given interface or any of its sub-interfaces * and adds them to the given results list. This method is recursive. * * @param results * List to store classes to. * @param interfaceType * Type to check. */ private void collectClassesFromInterfaceAndSubInterfaces(Collection<ImmutableClassType> results, ImmutableInterfaceType interfaceType) { for (ImmutableClassType classType : interfaceType.getImmutableRealizingClasses()) { if (classType.isInitialized()) { results.add(classType); } collectClassesFromSubClasses(results, classType); } for (ImmutableInterfaceType superInterfaceType : interfaceType.getImmutableSubInterfaces()) { collectClassesFromInterfaceAndSubInterfaces(results, superInterfaceType); } }
collectClassesFromInterfaceAndSubInterfaces(results, interfaceType);
} else if (immutableType.isInterface()) { ImmutableInterfaceType immutableInterfaceType = immutableType.castToInterface(); collectClassesFromInterfaceAndSubInterfaces(results, immutableInterfaceType);