public void inspectAllClasses() {
        for (URL jarUrl : this.jars) {
            if (CLASSLOADER_DEBUGGING) {
                System.out.println("Inspecting " + jarUrl);
            }

            JarInputStream in = null;

            try {
                in = new JarInputStream(jarUrl.openStream());

                JarEntry entry = null;
                while ((entry = in.getNextJarEntry()) != null) {
                    String name = entry.getName();
                    if (name.endsWith(".class")) {
                        if (CLASSLOADER_DEBUGGING) {
                            System.out.println("Inspecting class file " + name);
                        }

                        byte[] data = IOUtils.readFully(in, -1, true);

                        String className = name.substring(0, name.length() - 6).replaceAll("/", ".");

                        for (IClassInspector inspector : this.classInspectors) {
                            if (CLASSLOADER_DEBUGGING) {
                                System.out.println("Inspecting class file with " + inspector);
                            }
                            inspector.inspect(className, data);
                        }
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                Util.close(in);
            }
        }
    }