protected Class findClassImpl(String name, BundleFile bundlefile, ProtectionDomain bundledomain) {
protected Class findClassImpl(String name, ClasspathEntry classpathEntry) {
	protected Class findClassImpl(String name, BundleFile bundlefile, ProtectionDomain bundledomain) {		if (Debug.DEBUG && Debug.DEBUG_LOADER) {			Debug.println("BundleClassLoader[" + hostdata + "].findClass(" + name + ")");		}		String filename = name.replace('.', '/').concat(".class");		BundleEntry entry = bundlefile.getEntry(filename);		if (entry == null) {			return null;		}		InputStream in;		try {			in = entry.getInputStream();		} catch (IOException e) {			return null;		}		int length = (int) entry.getSize();		byte[] classbytes;		int bytesread = 0;		int readcount;		if (Debug.DEBUG && Debug.DEBUG_LOADER) {			Debug.println("  about to read " + length + " bytes from " + filename);		}		try {			try {				if (length > 0) {					classbytes = new byte[length];					readloop : for (; bytesread < length; bytesread += readcount) {						readcount = in.read(classbytes, bytesread, length - bytesread);						if (readcount <= 0) /* if we didn't read anything */ {							break readloop; /* leave the loop */						}					}				} else /* BundleEntry does not know its own length! */ {					length = buffersize;					classbytes = new byte[length];					readloop : while (true) {						for (; bytesread < length; bytesread += readcount) {							readcount = in.read(classbytes, bytesread, length - bytesread);							if (readcount <= 0) /* if we didn't read anything */ {								break readloop; /* leave the loop */							}						}						byte[] oldbytes = classbytes;						length += buffersize;						classbytes = new byte[length];						System.arraycopy(oldbytes, 0, classbytes, 0, bytesread);					}				}			} catch (IOException e) {				if (Debug.DEBUG && Debug.DEBUG_LOADER) {					Debug.println("  IOException reading " + filename + " from " + hostdata);				}				return null;			}		} finally {			try {				in.close();			} catch (IOException ee) {			}		}		if (Debug.DEBUG && Debug.DEBUG_LOADER) {			Debug.println("  read " + bytesread + " bytes from " + filename);			Debug.println("  defining class " + name);		}		try {			return (defineClass(name, classbytes, 0, bytesread, bundledomain, bundlefile));		} catch (Error e) {			if (Debug.DEBUG && Debug.DEBUG_LOADER) {				Debug.println("  error defining class " + name);			}			throw e;		}	}