if (!foundClass) next = null; if (!entries.hasMoreElements())
if (!foundClass) {
    private void advance()    {        try {            close();            if (entries == null) {                prevZip = zip;                if (parts.size() == 0) {                    next = null;                    return;                }                String part = (String)parts.removeFirst();                File file = new File(part);                if (!file.isAbsolute())                    file = new File(parent, part);                int len = part.length();                if (len >= 4) {                    String ext = part.substring(len - 4, len);                    if (ext.equalsIgnoreCase(".jar")) {                        zip = new JarFile(file);                    } else if (ext.equalsIgnoreCase(".zip")) {                        zip = new ZipFile(file);                    } else {                        zip = null;                    }                    if (zip != null)                        entries = zip.entries();                }                if (entries == null) {                    if (file.isDirectory()) {                        // TODO: could lazily recurse for performance                        entries = findClasses(file);                    } else {                        throw new IllegalArgumentException("Do not know how to handle " + part);                    }                }            }            boolean foundClass = false;            while (entries.hasMoreElements()) {                next = entries.nextElement();                if (foundClass = isClassFile(getName(next)))                    break;            }            if (!foundClass)                next = null;            if (!entries.hasMoreElements())                entries = null;        } catch (IOException e) {            throw new WrappedIOException(e);        }    }