void (final ChangesCacheFile cache, final UpdatedFiles updatedFiles, final @Nullable Consumer<? super List<CommittedChangeList>> incomingChangesConsumer) { refreshCacheAsync(cache, false, new RefreshResultConsumer() { @Override public void receivedChanges(final List<CommittedChangeList> committedChangeLists) { try { debug("Processing updated files after refresh in " + cache.getLocation()); boolean result = true; if (committedChangeLists.size() > 0) { // received some new changelists, try to process updated files again result = cache.processUpdatedFiles(updatedFiles, myNewIncomingChanges); } debug(result ? "Still have unaccounted files" : "No more unaccounted files"); // for svn, we won't get exact revision numbers in updatedFiles, so we have to double-check by // checking revisions we have locally if (result) { cache.refreshIncomingChanges(); debug("Clearing cached incoming changelists"); myCachedIncomingChangeLists = null; } pendingUpdateProcessed(incomingChangesConsumer); } catch (IOException e) { LOG.error(e); } catch(VcsException e) { notifyRefreshError(e); } } @Override public void receivedError(VcsException ex) { notifyRefreshError(ex); } }); }