anchor.diff:     */
     CompletionManager completionManagerFor(
         AnalysisContext context, Source source) {
  -    if (_manager != null) {
  -      if (_manager.context == context && _manager.source == source) {
  -        return _manager;
  -      }
  -      _discardManager();
  -    }
  -    _manager = createCompletionManager(server, context, source);
  -    if (context != null) {
  -      _sourcesChangedSubscription =
  -          context.onSourcesChanged.listen(sourcesChanged);
  -    }
  -    return _manager;
  -  }
  -
  -  /**
  -   * If the context associated with the cache has changed or been removed
  -   * then discard the cache.
  -   */
  -  void contextsChanged(ContextsChangedEvent event) {
  -    if (_manager != null) {
  -      AnalysisContext context = _manager.context;
  -      if (event.changed.contains(context) || event.removed.contains(context)) {
  -        _discardManager();
  -      }
  -    }
  +    return createCompletionManager(server, context, source);
     }
   
     CompletionManager createCompletionManager(
  
positive.code:   /**
     * Initialize a new request handler for the given [server].
     */
    CompletionDomainHandler(this.server) {
      server.onContextsChanged.listen(contextsChanged);
      server.onPriorityChange.listen(priorityChanged);
      searchEngine = server.searchEngine;
    }
  
    /**
     * Return the completion manager for most recent [Source] and [AnalysisContext],
     * or `null` if none.
     */
    CompletionManager get manager => _manager;
  
    /**
     * Return the [CompletionManager] for the given [context] and [source],
  
negative.code:   final AnalysisServer server;
  
    /**
     * The next completion response id.
     */
    int _nextCompletionId = 0;
  
    /**
     * Code completion performance for the last completion operation.
  