DetectorFactory factory = detectorFactoryCollection.getFactory(visitorName);
DetectorFactory factory = getDetectorFactoryCollection().getFactory(visitorName);
	protected void handleOptionWithArgument(String option, String argument) throws IOException {		if (option.equals("-outputFile")) {			String outputFile = argument;			try {				outputStream = new PrintStream(new BufferedOutputStream(new FileOutputStream(outputFile)));			} catch (IOException e) {				System.err.println("Couldn't open " + outputFile + " for output: " + e.toString());				System.exit(1);			}		} else if (option.equals("-release")) {			this.releaseName = argument;		} else if (option.equals("-sourceInfo")) {			sourceInfoFile = argument;		} else if (option.equals("-visitors") || option.equals("-omitVisitors")) {			boolean omit = option.equals("-omitVisitors");			if (!omit) {				// Selecting detectors explicitly, so start out by				// disabling all of them.  The selected ones will				// be re-enabled.				userPreferences.enableAllDetectors(false);			}			// Explicitly enable or disable the selected detectors.			StringTokenizer tok = new StringTokenizer(argument, ",");			while (tok.hasMoreTokens()) {				String visitorName = tok.nextToken();				DetectorFactory factory = detectorFactoryCollection.getFactory(visitorName);				if (factory == null)					throw new IllegalArgumentException("Unknown detector: " + visitorName);				userPreferences.enableDetector(factory, !omit);			}		} else if (option.equals("-chooseVisitors")) {			// This is like -visitors and -omitVisitors, but			// you can selectively enable and disable detectors,			// starting from the default set (or whatever set			// happens to be in effect).			choose(argument, "Detector choices", new Chooser() {				public void choose(boolean enabled, String what) {					DetectorFactory factory = detectorFactoryCollection					.getFactory(what);					if (factory == null)						throw new IllegalArgumentException("Unknown detector: " + what);					if (FindBugs.DEBUG) {						System.err.println("Detector " + factory.getShortName() + " " +								(enabled ? "enabled" : "disabled") +								", userPreferences="+System.identityHashCode(userPreferences));					}					userPreferences.enableDetector(factory, enabled);				}			});		} else if (option.equals("-choosePlugins")) {			// Selectively enable/disable plugins			choose(argument, "Plugin choices", new Chooser() {				public void choose(boolean enabled, String what) {					Plugin plugin = detectorFactoryCollection.getPluginById(what);					if (plugin == null)						throw new IllegalArgumentException("Unknown plugin: " + what);					plugin.setEnabled(enabled);				}			});		} else if (option.equals("-adjustPriority")) {			// Selectively raise or lower the priority of warnings			// produced by specified detectors.			StringTokenizer tok = new StringTokenizer(argument, ",");			while (tok.hasMoreTokens()) {				String token = tok.nextToken();				int eq = token.indexOf('=');				if (eq < 0)					throw new IllegalArgumentException("Illegal priority adjustment: " + token);				String visitorName = token.substring(0, eq);				DetectorFactory factory = detectorFactoryCollection.getFactory(visitorName);				if (factory == null)					throw new IllegalArgumentException("Unknown detector: " + visitorName);				String adjustment = token.substring(eq + 1);				if (!(adjustment.equals("raise") || adjustment.equals("lower")))					throw new IllegalArgumentException("Illegal priority adjustment value: " +							adjustment);				// Recall that lower values are higher priorities				factory.setPriorityAdjustment(adjustment.equals("raise") ? -1 : +1);			}		} else if (option.equals("-bugCategories")) {			this.bugCategorySet = FindBugs.handleBugCategories(userPreferences, argument);		} else if (option.equals("-onlyAnalyze")) {			// The argument is a comma-separated list of classes and packages			// to select to analyze.  (If a list item ends with ".*",			// it specifies a package, otherwise it's a class.)			StringTokenizer tok = new StringTokenizer(argument, ",");			while (tok.hasMoreTokens()) {				String item = tok.nextToken();				if (item.endsWith(".-"))					classScreener.addAllowedPrefix(item.substring(0, item.length() - 1));				else if (item.endsWith(".*"))					classScreener.addAllowedPackage(item.substring(0, item.length() - 1));				else					classScreener.addAllowedClass(item);			}		} else if (option.equals("-exclude")) {			if (excludeFilterFile != null) 				throw new IllegalArgumentException("Can specify one exclude filter file");			excludeFilterFile = argument;		} else if (option.equals("-include")) {			if (includeFilterFile != null) 				throw new IllegalArgumentException("Can specify one include filter file");			includeFilterFile = argument;		} else if (option.equals("-auxclasspath")) {			StringTokenizer tok = new StringTokenizer(argument, File.pathSeparator);			while (tok.hasMoreTokens())				project.addAuxClasspathEntry(tok.nextToken());		} else if (option.equals("-sourcepath")) {			StringTokenizer tok = new StringTokenizer(argument, File.pathSeparator);			while (tok.hasMoreTokens())				project.addSourceDir(new File(tok.nextToken()).getAbsolutePath());		} else {			super.handleOptionWithArgument(option, argument);		}	}