anchor.diff:            );
           });
   
  -        performance.suggestionCount = result.suggestions.length;
  +        performance.suggestionCount = suggestions.length;
         } finally {
           ifMatchesRequestClear(completionRequest);
         }
  
positive.code:   CompletionResult(
        this.replacementOffset, this.replacementLength, this.suggestions);
  }
  
negative.code:   /// automatically called when a client listens to the stream returned by
    /// [results]. Subclasses should override this method, append at least one
    /// result to the [controller], and close the controller stream once complete.
    Future<List<CompletionSuggestion>> computeSuggestions(
      OperationPerformanceImpl performance,
      DartCompletionRequest request,
      Set<ElementKind>? includedElementKinds,
      Set<String>? includedElementNames,
      List<IncludedSuggestionRelevanceTag>? includedSuggestionRelevanceTags,
    ) async {
      //
      // Allow plugins to start computing fixes.
      //
      var requestToPlugins = performance.run('askPlugins', (_) {
        return _sendRequestToPlugins(request);
      });
  
      //
      // Compute completions generated by server.
      //
      var suggestions = <CompletionSuggestion>[];
      await performance.runAsync('computeSuggestions', (performance) async {
        var manager = DartCompletionManager(
          includedElementKinds: includedElementKinds,
          includedElementNames: includedElementNames,
          includedSuggestionRelevanceTags: includedSuggestionRelevanceTags,
        );
  
        try {
          suggestions.addAll(
            await manager.computeSuggestions(request, performance),
          );
        } on AbortCompletion {
          suggestions.clear();
        }
      });
      // TODO (danrubel) if request is obsolete (processAnalysisRequest returns
      // false) then send empty results
  