SourceFinder sourceFinder = getEngine().getAnalysisContext().getSourceFinder();
SourceFinder sourceFinder = AnalysisContext.currentAnalysisContext().getSourceFinder();
	protected void printBug(BugInstance bugInstance) {		int lineStart = 0;		int lineEnd = 0;		String fullPath = "???";		SourceLineAnnotation line = bugInstance.getPrimarySourceLineAnnotation();		if (line == null) {			ClassAnnotation classInfo = bugInstance.getPrimaryClass();			if (classInfo != null) {				fullPath = sourceFileNameCache.get(classInfo.getClassName());			}		} else {			lineStart = line.getStartLine();			lineEnd = line.getEndLine();			SourceFinder sourceFinder = getEngine().getAnalysisContext().getSourceFinder();			String pkgName = line.getPackageName();			try {				fullPath = sourceFinder.findSourceFile(pkgName, line.getSourceFile()).getFullFileName();			} catch (IOException e) {				if (pkgName.equals(""))					fullPath = line.getSourceFile();				else					fullPath = pkgName.replace('.', '/') + "/" + line.getSourceFile();			}		}		outputStream.print(fullPath + ":"		        + lineStart + ":"		        + lineEnd + " "		        + bugInstance.getMessage());		switch (bugInstance.getPriority()) {		case Detector.EXP_PRIORITY:			outputStream.print(" (E) ");			break;		case Detector.LOW_PRIORITY:			outputStream.print(" (L) ");			break;		case Detector.NORMAL_PRIORITY:			outputStream.print(" (M) ");			break;		case Detector.HIGH_PRIORITY:			outputStream.print(" (H) ");			break;		}		outputStream.println();	}