private ProjectWrapper(final BufferedReader r, final Set<String> affected) {
    affectedFiles = affected;
    myProject = null;
    myProjectBuilder = null;
    myHistory = null;

    myRoot = RW.readStringAttribute(r, "Root:");
    myProjectSnapshot =
        myHomeDir
            + File.separator
            + myJPSDir
            + File.separator
            + myRoot.replace(File.separatorChar, myFileSeparatorReplacement);

    RW.readTag(r, "Libraries:");
    final Set<LibraryWrapper> libs =
        (Set<LibraryWrapper>) RW.readMany(r, myLibraryWrapperReader, new HashSet<LibraryWrapper>());

    for (LibraryWrapper l : libs) {
      myLibraries.put(l.getName(), l);
    }

    RW.readTag(r, "Modules:");
    final Set<ModuleWrapper> mods =
        (Set<ModuleWrapper>) RW.readMany(r, myModuleWrapperReader, new HashSet<ModuleWrapper>());

    for (ModuleWrapper m : mods) {
      myModules.put(m.getName(), m);
    }

    RW.readMany(r, RW.myStringReader, affectedFiles);

    try {
      dependencyMapping = new Mappings(getMapDir());
    } catch (IOException e) {
      throw new RuntimeException(e);
    }
    backendCallback = dependencyMapping.getCallback();
  }
 public WeakClasspathItemWrapper(final LibraryWrapper l) {
   myType = "Library";
   myName = l.getName();
 }