Instead of using the array of ResourceTraversals, perhaps we could instead use the collection of changed file resources from the diff data if available (check for null return)? This would significantly reduce the number of resources that need to be iterated over.

Right now the refresh operation for me takes about 200ms when saving a file in the JGit repository. If the refresh is only on the one target file then the time is reduced to less than 10ms.