anchor.diff:      internalError(message, element: element);
     }
   
  -  void unhandledExceptionOnElement(Element element, StackTrace stackTrace) {
  +  void unhandledExceptionOnElement(Element element,
  +                                   StackTrace stackTrace,
  +                                   String message) {
       if (hasCrashed) return;
       hasCrashed = true;
       reportDiagnostic(spanFromElement(element),
                        MessageKind.COMPILER_CRASHED.error().toString(),
                        api.Diagnostic.CRASH);
  -    pleaseReportCrash(stackTrace);
  -  }
  -
  -  void pleaseReportCrash(StackTrace stackTrace) {
  +    pleaseReportCrash(stackTrace, message);
  +  }
  +
  +  void pleaseReportCrash(StackTrace stackTrace, String message) {
       print(MessageKind.PLEASE_REPORT_THE_CRASH.message({'buildId': buildId}));
  +    if (message != null) {
  +      print(message);
  +    }
       if (stackTrace != null) {
         print(stackTrace);
       }
  
positive.code:       // do not have enough stack space.
        rethrow;
      } catch (ex, s) {
        try {
          unhandledExceptionOnElement(element, s);
        } catch (doubleFault) {
          // Ignoring exceptions in exception handling.
        }
        throw new CompilerCancelledException('The compiler crashed.');
      } finally {
        _currentElement = old;
      }
  
negative.code:           reportDiagnostic(new SourceSpan(uri, 0, 0),
                             MessageKind.COMPILER_CRASHED.error().toString(),
                             api.Diagnostic.CRASH);
            String message = 'The compiler crashed.';
            pleaseReportCrash(getAttachedStackTrace(error), message);
          }
        } catch (doubleFault) {
          // Ignoring exceptions in exception handling.
  