public void finishDelayedVisits() {
    for (IResourceDelta delta : delayedVisits) {
      try {
        IResource resource = delta.getResource();

        boolean isAddRemove = false;
        switch (delta.getKind()) {
          case IResourceDelta.ADDED:
            memo.put(PyDevBuilderVisitor.DOCUMENT_TIME, System.currentTimeMillis());
            visitAddedResource(
                resource, FileUtilsFileBuffer.getDocOnCallbackFromResource(resource), monitor);
            isAddRemove = true;
            break;

          case IResourceDelta.CHANGED:
            memo.put(PyDevBuilderVisitor.DOCUMENT_TIME, System.currentTimeMillis());
            visitChangedResource(
                resource, FileUtilsFileBuffer.getDocOnCallbackFromResource(resource), monitor);
            isAddRemove = true;
            break;
        }

        if (isAddRemove) {
          // communicate the progress
          currentResourcesVisited++;
          FastStringBuffer bufferToCreateString = new FastStringBuffer();
          PyDevBuilder.communicateProgress(
              monitor,
              totalResources,
              currentResourcesVisited,
              resource,
              this,
              bufferToCreateString);
        }
      } catch (Exception e) {
        Log.log(e);
      }
    }
  }