private @NotNull SchemeManager<ShelvedChangeList> createShelveSchemeManager(@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);
                  ShelvedChangeList.writeExternal(scheme, child, shouldCollapsePath ? myPathMacroSubstitutor : null);
                  return child;
                }
              }, null, customPath != null ? Paths.get(customPath) : null);
  }
private @NotNull SchemeManager<ShelvedChangeList> createShelveSchemeManager(@NotNull Project project,
                                                                              @Nullable String customPath)