@Override
    public void consume(String s) {
      LOG.debug("update for: " + s);
      //todo check canceled - check VCS's ready for asynchronous queries
      // get last remote revision for file
      final VirtualFile vf = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(new File(s));
      final ItemLatestState state;
      final DiffProvider diffProvider = myVcsRoot.getVcs().getDiffProvider();
      if (vf == null) {
        // doesnt matter if directory or not
        state = diffProvider.getLastRevision(getFilePath(s, false));
      } else {
        state = diffProvider.getLastRevision(vf);
      }
      final VcsRevisionNumber newNumber = (state == null) || state.isDefaultHead() ? UNKNOWN : state.getNumber();

      final Pair<VcsRoot, VcsRevisionNumber> oldPair;
      // update value in cache
      synchronized (myLock) {
        oldPair = myData.get(s);
        myData.put(s, Pair.create(myVcsRoot, newNumber));
      }

      if (oldPair == null || oldPair.getSecond().compareTo(newNumber) != 0) {
        LOG.debug("refresh triggered by " + s);
        mySomethingChanged = true;
      }
    }
@Override
    public void consume(String s)