Document doc = reader.read(new EclipseXMLReader(new FileReader(descriptor)));
Document doc = reader.read(new EclipseXMLReader(new FileReader(item.getDescriptorFileName())));
	public EclipseClasspath execute() throws EclipseClasspathException, DocumentException, IOException {		// Build plugin directory map		File pluginDir = new File(eclipseDir, "plugins");		File[] dirList = pluginDir.listFiles(new FileFilter() {			public boolean accept(File pathname) {				return pathname.isDirectory();			}		});		if (dirList == null)			throw new EclipseClasspathException("Could not list plugins in directory " + pluginDir);		for (int i = 0; i < dirList.length; ++i) {			String pluginId = getPluginId(dirList[i].getName());			if (pluginId != null) {				//System.out.println(pluginId + " ==> " + dirList[i]);				pluginDirectoryMap.put(pluginId, dirList[i]);			}		}		Map<String, Plugin> requiredPluginMap = new HashMap<String, Plugin>();		LinkedList<String> workList = new LinkedList<String>();		workList.add(pluginFile);		while (!workList.isEmpty()) {			String descriptor = workList.removeFirst();			// Read the plugin file			SAXReader reader = new SAXReader();			Document doc = reader.read(new EclipseXMLReader(new FileReader(descriptor)));			// Add to the map			Plugin plugin = new Plugin(doc);			requiredPluginMap.put(plugin.getId(), plugin);			// Add unresolved required plugins to the worklist			for (Iterator<String> i = plugin.requiredPluginIdIterator(); i.hasNext(); ) {				String requiredPluginId = i.next();				if (requiredPluginMap.get(requiredPluginId) == null) {					// Find the plugin in the Eclipse directory					File requiredPluginDir = pluginDirectoryMap.get(requiredPluginId);					if (requiredPluginDir == null)						throw new EclipseClasspathException("Unable to find plugin " + requiredPluginId);					workList.add(new File(requiredPluginDir, "plugin.xml").getPath());				}			}		}		System.out.println("Found " + requiredPluginMap.size() + " required plugins");		return this;	}