anchor.diff:      _ContextInfo newInfo = _createContext(newFolder, []);
       newInfo.parent = oldInfo;
       // prepare sources to extract
  -    Map<String, Source> extractSources = new HashMap<String, Source>();
  +    Map<String, Source> extractedSources = new HashMap<String, Source>();
       oldInfo.sources.forEach((path, source) {
         if (newFolder.contains(path)) {
  -        extractSources[path] = source;
  +        extractedSources[path] = source;
         }
       });
       // update new context
       {
         ChangeSet changeSet = new ChangeSet();
  -      extractSources.forEach((path, source) {
  +      extractedSources.forEach((path, source) {
           newInfo.sources[path] = source;
           changeSet.addedSource(source);
         });
  
positive.code:    * determine the context directories.
     */
    void setRoots(List<String> includedPaths, List<String> excludedPaths) {
      // included
      Set<Folder> includedFolders = new HashSet<Folder>();
      for (int i = 0; i < includedPaths.length; i++) {
  
negative.code:       throw new UnimplementedError('Excluded paths are not supported yet');
      }
      Set<Folder> excludedFolders = new HashSet<Folder>();
      // destroy old contexts
      for (Folder contextFolder in contextFolders) {
        bool isIncluded = includedFolders.any((folder) {
          return folder.contains(contextFolder.path);
        });
        if (!isIncluded) {
          _destroyContext(contextFolder);
        }
      }
      // create new contexts
      for (Folder includedFolder in includedFolders) {
        bool wasIncluded = contextFolders.any((folder) {
          return folder.contains(includedFolder.path);
        });
        if (!wasIncluded) {
          _createContexts(includedFolder, false);
        }
      }
    }
  
  