if (inter.isAssignableFrom(in)) {   notIn = false;
if (notIn) { retval.add(inter);
    public static Set decomposeClass(Class clazz) {        if (net.sf.cglib.proxy.Factory.class.isAssignableFrom(clazz)) {            // Decompose            Set retval = new LinkedHashSet();            retval.add(clazz.getSuperclass());            Class interfs[] = clazz.getInterfaces();            for (int i = 0; i < interfs.length; i++) {                Class inter = interfs[i];                if (net.sf.cglib.proxy.Factory.class != inter) {                    boolean notIn = true;                    Iterator inIter = retval.iterator();                    while (inIter.hasNext() && notIn) {                        Class in = (Class) inIter.next();                        if (in.isAssignableFrom(inter)) {                            // That means that the one already in the return value is more general                            // than the one we are about to put in, so we can get rid of the one                            // already in.                            inIter.remove();                        }                        if (inter.isAssignableFrom(in)) {                            // That means that the one already in the return value is more specific                            // than the one we would have added, so don't bother.                            notIn = false;                        }                    }                    if (notIn) {                        retval.add(inter);                    }                }            }            return retval;        } else {            // Normal class - return it.            return Collections.singleton(clazz);        }    }