if (!Modifier.isPublic(inter.getModifiers())) if (in_package) { Package p = inter.getPackage(); if (data.pack != inter.getPackage()) throw new IllegalArgumentException( "non-public interfaces "
catch (ClassNotFoundException e) { throw new IllegalArgumentException("not accessible in " + "classloader: " + inter); } if (! Modifier.isPublic(inter.getModifiers())) if (in_package) { String p = getPackage(inter); if (! data.pack.equals(p)) throw new IllegalArgumentException("non-public interfaces "
        static ProxyData getProxyData(ProxyType pt) {            Map method_set = (Map) ProxySignature.coreMethods.clone();            boolean in_package = false; // true if we encounter non-public                                        // interface            ProxyData data = new ProxyData();            data.interfaces = pt.interfaces;            // if interfaces is too large, we croak later on when the constant            // pool overflows            int i = data.interfaces.length;            while (--i >= 0) {                Class inter = data.interfaces[ i];                if (!inter.isInterface())                        throw new IllegalArgumentException("not an interface: "                                + inter);                try {                    if (Class.forName(inter.getName(), false, pt.loader) != inter)                            throw new IllegalArgumentException(                                    "not accessible in " + "classloader: "                                            + inter);                } catch (ClassNotFoundException e) {                    throw new IllegalArgumentException("not accessible in "                            + "classloader: " + inter);                }                if (!Modifier.isPublic(inter.getModifiers()))                        if (in_package) {                            Package p = inter.getPackage();                            if (data.pack != inter.getPackage())                                    throw new IllegalArgumentException(                                            "non-public interfaces "                                                    + "from different "                                                    + "packages");                        } else {                            in_package = true;                            data.pack = inter.getPackage();                        }                for (int j = i - 1; j >= 0; j--)                    if (data.interfaces[ j] == inter)                            throw new IllegalArgumentException(                                    "duplicate interface: " + inter);                Method[] methods = inter.getMethods();                int j = methods.length;                while (--j >= 0) {                    ProxySignature sig = new ProxySignature(methods[ j]);                    ProxySignature old = (ProxySignature) method_set.put(sig,                            sig);                    if (old != null) sig.checkCompatibility(old);                }            }            i = method_set.size();            data.methods = new Method[ i];            data.exceptions = new Class[ i][];            Iterator itr = method_set.values().iterator();            while (--i >= 0) {                ProxySignature sig = (ProxySignature) itr.next();                data.methods[ i] = sig.method;                data.exceptions[ i] = (Class[]) sig.exceptions                        .toArray(new Class[ sig.exceptions.size()]);            }            return data;        }