public void minus(Pair<String, AbstractVcs> pair) {
   final AbstractVcs vcs = pair.getSecond();
   if (RemoteDifferenceStrategy.ASK_TREE_PROVIDER.equals(vcs.getRemoteDifferenceStrategy())) {
     myRemoteRevisionsStateCache.minus(pair);
   } else {
     myRemoteRevisionsNumbersCache.minus(pair);
   }
 }
 /** @return false if not up to date */
 public boolean isUpToDate(final Change change) {
   final AbstractVcs vcs = ChangesUtil.getVcsForChange(change, myProject);
   if (vcs == null) return true;
   final RemoteDifferenceStrategy strategy = vcs.getRemoteDifferenceStrategy();
   if (RemoteDifferenceStrategy.ASK_TREE_PROVIDER.equals(strategy)) {
     return myRemoteRevisionsStateCache.isUpToDate(change);
   } else {
     return myRemoteRevisionsNumbersCache.isUpToDate(change);
   }
 }
 private void updateRoots() {
   final VcsRoot[] roots = myVcsManager.getAllVcsRoots();
   synchronized (myLock) {
     for (VcsRoot root : roots) {
       final AbstractVcs vcs = root.getVcs();
       if (!myKinds.containsKey(vcs.getName())) {
         myKinds.put(vcs.getName(), vcs.getRemoteDifferenceStrategy());
       }
     }
   }
 }