code: protected void preprocessDiagnostic(JCDiagnostic diag) {
          for (Object o : diag.getArgs()) {
              if (o != null) {
                  preprocessArgument(o);
              }
          }
          if (diag.isMultiline()) {
              for (JCDiagnostic d : diag.getSubdiagnostics())
                  preprocessDiagnostic(d);
          }
      }
docs: Preprocess a given diagnostic by looking both into its arguments and into
  its subdiagnostics (if any). This preprocessing is responsible for
  generating info corresponding to features like where clauses, name
  simplification, etc.
  
  @param diag the diagnostic to be preprocessed