docs: protected void printBug(BugInstance bugInstance) {
          if (showRank) {
              int rank = BugRanker.findRank(bugInstance);
              outputStream.printf("%2d ", rank);
          }
          switch (bugInstance.getPriority()) {
          case Priorities.EXP_PRIORITY:
              outputStream.print("E ");
              break;
          case Priorities.LOW_PRIORITY:
              outputStream.print("L ");
              break;
          case Priorities.NORMAL_PRIORITY:
              outputStream.print("M ");
              break;
          case Priorities.HIGH_PRIORITY:
              outputStream.print("H ");
              break;
          default:
              assert false;
          }
  
          BugPattern pattern = bugInstance.getBugPattern();
          if (pattern != null) {
              String categoryAbbrev = null;
              BugCategory bcat = DetectorFactoryCollection.instance().getBugCategory(pattern.getCategory());
              if (bcat != null) {
                  categoryAbbrev = bcat.getAbbrev();
              }
              if (categoryAbbrev == null) {
                  categoryAbbrev = OTHER_CATEGORY_ABBREV;
              }
              outputStream.print(categoryAbbrev);
              outputStream.print(" ");
          }
  
          if (useLongBugCodes) {
              outputStream.print(bugInstance.getType());
              outputStream.print(" ");
          }
  
          if (reportHistory) {
              long first = bugInstance.getFirstVersion();
              long last = bugInstance.getLastVersion();
              outputStream.print(first);
              outputStream.print(" ");
              outputStream.print(last);
              outputStream.print(" ");
          }
          SourceLineAnnotation line = bugInstance.getPrimarySourceLineAnnotation();
          outputStream.println(bugInstance.getMessage().replace('\n', ' ') + "  " + line.toString());
      }