class CachedRepository extends GitRepository {

    @Override
    public ChangeScope<Change> getChanges(String fromRev, String toRev) {
        final String key = fromRev + toRev;
        return changesCache.computeIfAbsent(key, k -> {
            try {
                return super.getChanges(fromRev, toRev);
            } catch (SourceControlException e) {
                throw new SourceControlRuntimeException(e);
            }
        });
    }

    public  CachedRepository(String repositoryPath, SourceControlFilter... filters);

}