private void listUnderJarCustom(String packagePath,FileExt jarFile,Collection<JavaFileObjectInputClassInFileSystem> result) 
    {
    	String normalizedPath = jarFile.getCanonicalPath();
    	if (normalizedPath.contains("\\")) // Windows
    	{
            // No estoy seguro de que sea necesario normalizar pero por si acaso
            normalizedPath = normalizedPath.replace("\\","/"); // "C:/folder"
            normalizedPath = "/" + normalizedPath; //  "/C:/folder"
    	}
    	
    	String urlPath = "file:" + normalizedPath;
    	
    	URL packageFolderURL;    	
    	try { packageFolderURL = new URL(urlPath); }
    	catch (MalformedURLException ex) { throw new RelProxyException(ex); }    	
    	
        String jarUri = "jar:" + packageFolderURL.toExternalForm();    	
    	        
        int posEnd = packagePath.length() + 1;        
        
        ZipInputStream zip = null;
        
        try
        {
            zip = new ZipInputStream(packageFolderURL.openStream());
            ZipEntry zipEntry = zip.getNextEntry();
            while(zipEntry != null) 
            {
                String name = zipEntry.getName(); 
                // Empieza por packagePath y no hay más folders siguientes, terminando en un .class (una clase concreta)
                if (name.startsWith(packagePath) && name.indexOf('/', posEnd) == -1 && name.endsWith(CLASS_FILE_EXTENSION)) 
                {
                    URI uri = URI.create(jarUri + "!/" + name);
                    String binaryName = ClassDescriptor.getClassNameFromRelativeClassFilePath(name);
                    result.add(new JavaFileObjectInputClassInJar(binaryName, uri,zipEntry.getTime()));
                }	        	

                zipEntry = zip.getNextEntry();
            }    
        }
        catch(IOException ex)
        {
            throw new RelProxyException(ex);
        }
        finally
        {
            if (zip != null) try { zip.close(); } catch (IOException ex) { throw new RelProxyException(ex); }
        }
    }