JarInputStream inStream = null;
JarFile inJar = null;
	public List addJarFile(File inFile, File outDir, boolean canBeDirectory){//		System.err.println("? addJarFile(" + inFile + ", " + outDir + ")");		List addedClassFiles = new ArrayList();		needToReweaveWorld = true;		JarInputStream inStream = null;				try {			// Is this a directory we are looking at?			if (inFile.isDirectory() && canBeDirectory) {				addedClassFiles.addAll(addDirectoryContents(inFile,outDir));			} else {							inStream = new JarInputStream(new FileInputStream(inFile)); //??? buffered				addManifest(inStream.getManifest());							while (true) {					ZipEntry entry = inStream.getNextEntry();					if (entry == null) break;									byte[] bytes = FileUtil.readAsByteArray(inStream);					String filename = entry.getName();					UnwovenClassFile classFile = new UnwovenClassFile(new File(outDir, filename).getAbsolutePath(), bytes);					if (filename.endsWith(".class")) {						this.addClassFile(classFile);						addedClassFiles.add(classFile);					}//					else if (!entry.isDirectory()) {////						/* bug-44190 Copy meta-data *///						addResource(filename,classFile);//					}					inStream.closeEntry();				}				inStream.close();			}		} catch (FileNotFoundException ex) {			IMessage message = new Message(					"Could not find input jar file " + inFile.getPath() + ", ignoring",					new SourceLocation(inFile,0),					false);			world.getMessageHandler().handleMessage(message);		} catch (IOException ex) {			IMessage message = new Message(					"Could not read input jar file " + inFile.getPath() + "(" + ex.getMessage() + ")",					new SourceLocation(inFile,0),					true);			world.getMessageHandler().handleMessage(message);		} finally {			if (inStream != null) {				try {inStream.close();}				catch (IOException ex) {					IMessage message = new Message(							"Could not close input jar file " + inFile.getPath() + "(" + ex.getMessage() + ")",							new SourceLocation(inFile,0),							true);										world.getMessageHandler().handleMessage(message);									}			}		}				return addedClassFiles;	}