anchor.diff:      );
   
       for (var context in collection.contexts) {
  +      // Set the DeclarationsTracker, only call doWork to build up the available
  +      // suggestions if doComputeCompletionsFromAnalysisServer is true.
         var declarationsTracker = DeclarationsTracker(
             MemoryByteStore(), PhysicalResourceProvider.INSTANCE);
         declarationsTracker.addContext(context);
  -
  -      while (declarationsTracker.hasWork) {
  -        declarationsTracker.doWork();
  -      }
  -
  +      if (doComputeCompletionsFromAnalysisServer) {
  +        while (declarationsTracker.hasWork) {
  +          declarationsTracker.doWork();
  +        }
  +      }
  +
  +      // Loop through each file, resolve the file and call
  +      // forEachExpectedCompletion
         for (var filePath in context.contextRoot.analyzedFiles()) {
           if (AnalysisEngine.isDartFileName(filePath)) {
  +          _currentFilePath = filePath;
             try {
  -            // TODO (jwren) break this block into one or more additional methods
  -            final resolvedUnitResult =
  +            _resolvedUnitResult =
                   await context.currentSession.getResolvedUnit(filePath);
   
  -            var error = _getFirstErrorOrNull(resolvedUnitResult);
  +            var error = getFirstErrorOrNull(resolvedUnitResult);
               if (error != null) {
                 print('File $filePath skipped due to errors such as:');
                 print('  ${error.toString()}');
  
positive.code:     return Place.none();
    }
  }
  
negative.code:     return null;
    }
  
    static Place placementInSuggestionList(List<CompletionSuggestion> suggestions,
        ExpectedCompletion expectedCompletion) {
      var placeCounter = 1;
      for (var completionSuggestion in suggestions) {
  