private static Collection4 collectNames(Class[] classes) {
   Collection4 names = new Collection4();
   for (int classIdx = 0; classIdx < classes.length; classIdx++) {
     names.add(classes[classIdx].getName());
   }
   return names;
 }
 public static void main(String[] args) throws Exception {
   ClassLoader parent = ExcludingClassLoader.class.getClassLoader();
   String excName = ExcludingClassLoader.class.getName();
   Collection4 excluded = new Collection4();
   ClassLoader incLoader = new ExcludingClassLoader(parent, excluded);
   System.out.println(incLoader.loadClass(excName));
   excluded.add(excName);
   try {
     System.out.println(incLoader.loadClass(excName));
   } catch (ClassNotFoundException exc) {
     System.out.println("Ok, not found.");
   }
 }
 protected synchronized Class loadClass(String name, boolean resolve)
     throws ClassNotFoundException {
   if (_excludedNames.contains(name)) {
     print("EXCLUDED: " + name);
     throw new ClassNotFoundException(name);
   }
   if (_cache.containsKey(name)) {
     print("CACHED: " + name);
     return (Class) _cache.get(name);
   }
   if (mustDelegate(name)) {
     print("NATIVE: " + name);
     return super.loadClass(name, resolve);
   }
   Class clazz = findRawClass(name);
   if (resolve) {
     resolveClass(clazz);
   }
   _cache.put(clazz.getName(), clazz);
   print("LOADED: " + name);
   return clazz;
 }