public @Nullable List<CommittedChangeList> getChanges(ChangeBrowserSettings settings, final VirtualFile file, final @NotNull AbstractVcs vcs,
                                                        final int maxCount, final boolean cacheOnly, final CommittedChangesProvider provider,
                                                        final RepositoryLocation location) throws VcsException {
    if (settings instanceof CompositeCommittedChangesProvider.CompositeChangeBrowserSettings) {
      settings = ((CompositeCommittedChangesProvider.CompositeChangeBrowserSettings) settings).get(vcs);
    }
    if (provider instanceof CachingCommittedChangesProvider) {
      try {
        if (cacheOnly) {
          ChangesCacheFile cacheFile = myCachesHolder.getCacheFile(vcs, file, location);
          if (!cacheFile.isEmpty()) {

            final RepositoryLocation fileLocation = cacheFile.getLocation();
            fileLocation.onBeforeBatch();
            final List<CommittedChangeList> committedChangeLists = cacheFile.readChanges(settings, maxCount);
            fileLocation.onAfterBatch();
            return committedChangeLists;
          }
          return null;
        }
        else {
          if (canGetFromCache(vcs, settings, file, location, maxCount)) {
            return getChangesWithCaching(vcs, settings, file, location, maxCount);
          }
        }
      }
      catch (IOException e) {
        LOG.info(e);
      }
    }
    //noinspection unchecked
    return provider.getCommittedChanges(settings, location, maxCount);
  }
public @Nullable List<CommittedChangeList> getChanges(ChangeBrowserSettings settings, final VirtualFile file, final @NotNull AbstractVcs vcs,
                                                        final int maxCount, final boolean cacheOnly, final CommittedChangesProvider provider,
                                                        final RepositoryLocation location)