anchor.diff:    /// The last marked line in the buffer.
     int _previousDartOffset = -1;
   
  -  SourceLocation _pendingDartOffset;
  -  SourceLocation _pendingJSLocation;
  +  SourceLocation? _pendingDartOffset;
  +  SourceLocation? _pendingJSLocation;
   
     @override
     void emit(String code) {
       var chars = code.runes.toList();
       var length = chars.length;
  -    for (int i = 0; i < length; i++) {
  +    for (var i = 0; i < length; i++) {
         var c = chars[i];
         if (c == _LF || (c == _CR && (i + 1 == length || chars[i + 1] != _LF))) {
           // Return not followed by line-feed is treated as a new line.
  
positive.code:   void _flushPendingMarks() {
      var pending = _pendingDartOffset;
      if (pending != null) {
        _markInternal(pending, _pendingJSLocation);
        _pendingDartOffset = null;
        _pendingJSLocation = null;
      }
    }
  
    void _mark(SourceLocation dartLocation, [SourceLocation jsLocation]) {
      _flushPendingMarks();
      jsLocation ??= _getJSLocation();
      _markInternal(dartLocation, jsLocation);
  
negative.code:   final Expression expression;
    HoverComment(this.expression, this.start, this.end);
    @override
    String toString() => '#<HoverComment `$expression` @ $start to $end>';
  }
  
  class SourceMapPrintingContext extends SimpleJavaScriptPrintingContext {
  