anchor.diff:     * determine the context directories.
      */
     void setRoots(List<String> includedPaths, List<String> excludedPaths) {
  +    List<Folder> contextFolders = _contexts.keys.toList();
       // included
       Set<Folder> includedFolders = new HashSet<Folder>();
       for (int i = 0; i < includedPaths.length; i++) {
  
positive.code:     _ContextInfo newInfo = _createContext(newFolder, []);
      newInfo.parent = oldInfo;
      // prepare sources to extract
      Map<String, Source> extractSources = new HashMap<String, Source>();
      oldInfo.sources.forEach((path, source) {
        if (newFolder.contains(path)) {
          extractSources[path] = source;
        }
      });
      // update new context
      {
        ChangeSet changeSet = new ChangeSet();
        extractSources.forEach((path, source) {
          newInfo.sources[path] = source;
          changeSet.addedSource(source);
        });
  
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);
        }
      }
    }
  
  