code: @Override
      public void report() {
          for (Map.Entry<KeyType, Map<String, Map<String, List<SourceInfo>>>> entry : parmInfo.entrySet()) {
              KeyType type = entry.getKey();
              Map<String, Map<String, List<SourceInfo>>> typeMap = entry.getValue();
  
              for (Map<String, List<SourceInfo>> parmCaseInfo : typeMap.values()) {
                  if (parmCaseInfo.size() > 1) {
                      BugInstance bi = new BugInstance(this, type.getDescription(), NORMAL_PRIORITY);
  
                      for (Map.Entry<String, List<SourceInfo>> sourceInfos : parmCaseInfo.entrySet()) {
                          for (SourceInfo sourceInfo : sourceInfos.getValue()) {
                              bi.addClass(sourceInfo.clsName);
                              bi.addMethod(sourceInfo.clsName, sourceInfo.methodName, sourceInfo.signature, sourceInfo.isStatic);
                              bi.addSourceLine(sourceInfo.srcLine);
                              bi.addString(sourceInfos.getKey());
                          }
                      }
  
                      bugReporter.reportBug(bi);
                  }
              }
          }
          parmInfo.clear();
      }
docs: implements the visitor to look for the collected parm names, and look for duplicates that are different in casing only.