public void report(Diagnostic diag) {
   Preconditions.checkNotNull(diag, "diagnostic");
   switch (diag.getSeverity()) {
     case INFORMATION:
       reportInformation(diag.getLocation(), diag.getMessage());
       break;
     case WARNING:
       reportWarning(diag.getLocation(), diag.getMessage());
       break;
     case ERROR:
       reportError(diag.getLocation(), diag.getMessage());
       break;
     default:
       throw new AssertionError("Unhandled severity: " + diag.getSeverity());
   }
 }