SchemeManager<ShelvedChangeList> (@NotNull Project project, @Nullable String customPath) { FilePath customShelfFilePath = customPath != null ? VcsUtil.getFilePath(myPathMacroSubstitutor.expandPath(customPath)) : null; //don't collapse custom paths final boolean shouldCollapsePath = !VcsConfiguration.getInstance(myProject).USE_CUSTOM_SHELF_PATH; return SchemeManagerFactory.getInstance(project) .create(customShelfFilePath != null ? customShelfFilePath.getName() : SHELVE_MANAGER_DIR_PATH, new NonLazySchemeProcessor<ShelvedChangeList, ShelvedChangeList>() { @Override public @NotNull ShelvedChangeList readScheme(@NotNull Element element, boolean duringLoad) throws InvalidDataException { return readOneShelvedChangeList(element); } @Override public @NotNull Parent writeScheme(@NotNull ShelvedChangeList scheme) throws WriteExternalException { Element child = new Element(ELEMENT_CHANGELIST); scheme.writeExternal(child); if (shouldCollapsePath) { myPathMacroSubstitutor.collapsePaths(child); } return child; } }, null, customPath != null ? Paths.get(customPath) : null); }