Each diagnostic should store its own diagnostic formatter as a non-static field. Currently the formatter is a static field of JCDiagnostic. This forces the code in JCDiagnostic to go through an inelegant static factory method in order to initialize and retrieve the diagnostic formatter associated with the JCDiagnostic class each time it is used.
It would be much better to let the diagnostic factory set the diagnostic formatter on each newly created diagnostic object. This requires, as a side-effects, that all diagnostic objects are indeed created through a diagnostic factory, and that all occurrences of static factory method JCDiagnostic.framents are removed from the compiler.