anchor.diff:      );
     }
   
  -  List<TextSpan> _searchMatchAwareLineContents(
  -    List<TextSpan> startingContents,
  +  List<InlineSpan> _searchMatchAwareLineContents(
  +    List<InlineSpan> startingContents,
     ) {
       final searchMatches = widget.searchMatches;
       if (searchMatches == null || searchMatches.isEmpty) return startingContents;
  
positive.code:       if (scriptSource.length < 500000) {
          final highlighted = script.highlighter.highlight(context);
  
          // Look for [TextSpan]s which only contain '\n' to manually break the
          // output from the syntax highlighter into individual lines.
          var currentLine = <TextSpan>[];
          highlighted.visitChildren((span) {
            // TODO(elliette): Switch to using TextSpans instead of InlineSpans so
            // type-casting isn't necessary.
            currentLine.add(span as TextSpan);
            if (span.toPlainText() == '\n') {
              lines.add(
                TextSpan(
  
negative.code:   }
  
    TextSpan searchAwareLineContents() {
      final children = widget.lineContents.children;
      if (children == null) return const TextSpan();
  
      final activeSearchAwareContents = _activeSearchAwareLineContents(children);
  