src/main/java/org/eiichiro/bootleg/CtClassClassResolver.java
@Override
	public Set<CtClass> resolveByInterface(final Class<?> interfaceClass) throws IOException {
		Matcher<CtClass> matcher = new Matcher<CtClass>() {

			@Override
			public boolean matches(CtClass ctClass) {
				try {
					for (CtClass c : ctClass.getInterfaces()) {
						if (c.getName().equals(interfaceClass.getName())) {
							return true;
						}
					}
					
					CtClass superclass = ctClass.getSuperclass();
					
					if (superclass != null) {
						return matches(superclass);
					}
					
				} catch (Exception e) {}
				
				ctClass.detach();
				return false;
			}
			
		};
		return resolve(matcher);
	}
@Override
	public Set<CtClass> resolveByInterface(final Class<?> interfaceClass) throws IOException {
		Matcher<CtClass> matcher = new Matcher<CtClass>() {

			@Override
			public boolean matches(CtClass ctClass) {
				try {
					for (CtClass c : ctClass.getInterfaces()) {
						if (c.getName().equals(interfaceClass.getName())) {
							return true;
						}
					}
					
					CtClass superclass = ctClass.getSuperclass();
					
					if (superclass != null) {
						return matches(superclass);
					}
					
				} catch (Exception e) {}
				
				ctClass.detach();
				return false;
			}
			
		};
		return resolve(matcher);
	}
@ Override public Set < CtClass > resolveByInterface ( final Class < ? > interfaceClass ) throws IOException { Matcher < CtClass > matcher = new Matcher < CtClass > ( ) { @ Override public boolean matches ( CtClass ctClass ) { try { for ( CtClass c : ctClass . getInterfaces ( ) ) { if ( c . getName ( ) . equals ( interfaceClass . getName ( ) ) ) { return true ; } } CtClass superclass = ctClass . getSuperclass ( ) ; if ( superclass != null ) { return matches ( superclass ) ; } } catch ( Exception e ) { } ctClass . detach ( ) ; return false ; } } ; return resolve ( matcher ) ; }
Resolves the classes that implements the specified interface as
{@code javassist.CtClass}.

@param interfaceClass The interface being implemented.
@return Classes that implements the specified interface as
{@code javassist.CtClass}.
@throws IOException If any I/O access fails while traversing the search
path.
Resolves the classes that implements the specified interface as { @code javassist . CtClass } .