anchor.diff:    // our memory consumption.
     static final int MAX_CONTEXTS = 5;
   
  -  Map<Project, ProjectAnalyzer> _contextMap = {};
     Map<Project, Completer> _contextCompleters = {};
   
     List<ProjectAnalyzer> _recentContexts = [];
  
positive.code:   }
  
    Future<ProjectAnalyzer> _createProjectAnalyzer(Project project) {
      if (_contextMap[project] != null) {
        return new Future.value(_contextMap[project]);
      }
  
      _logger.info('creating analysis context [${project.name}]');
      Stopwatch timer = new Stopwatch()..start();
  
      ProjectAnalyzer context = new ProjectAnalyzer._(this, project);
      _contextMap[project] = context;
      _recentContexts.insert(0, context);
  
      if (_recentContexts.length > MAX_CONTEXTS) {
  
negative.code:   }
  
    Future disposeProjectAnalyzer(Project project) {
      Completer completer = _contextCompleters[project];
  
      return completer.future.then((ProjectAnalyzer context) {
        _logger.info('disposed analysis context [${project.name}]');
  
        if (_recentContexts.indexOf(context) >= MAX_CONTEXTS) {
          _recentContexts.remove(context);
          _contextCompleters.remove(completer);
  
          return _sendAction('disposeContext', {'contextId': project.uuid});
        }
      });
    }
  
    PackageManager getPackageManager() => services._packageManager;
  