private void sendDiagnosticWarning(ProcessingEnvironment processingEnv, Throwable e) {
      if (processingEnv != null && !myCodeShown) {
        processingEnv.getMessager().printMessage(
          Diagnostic.Kind.MANDATORY_WARNING,
          "The " + e.getClass() + " may be caused by the wrapped ProcessingEnvironment object.\n" +
          "Please pass the wrapped ProcessingEnvironment further to super.init().\n"+
          "If you need to access the original ProcessingEnvironment object (e.g. for creating com.sun.source.util.Trees.instance(ProcessingEnvironment)), you may use following code in the processor implementation:\n\n" +
          getUnwrapCodeSuggestion(ProcessingEnvironment.class, "processingEnv")
        );
        processingEnv.getMessager().printMessage(
          Diagnostic.Kind.MANDATORY_WARNING,
          "Workaround: to make project compile with the current annotation processor implementation, start JPS with VM option: -D"+JavacMain.TRACK_AP_GENERATED_DEPENDENCIES_PROPERTY + "=false\n" +
          "When run from IDE, the option can be set in \"Compiler Settings | build process VM options\""
        );
        myCodeShown = true;
      }
    }
private void sendDiagnosticWarning(ProcessingEnvironment processingEnv, Throwable e)