Patch Set 2: I would prefer that you didn't submit this

This looks wrong to me.  You can't replace code like:
  workspaceRoot.getContainerForLocation(location);	
with:
  resource = workspaceRoot.getFile(location.makeRelativeTo(workspaceRo
ot.getLocation()));

You are making implicit assumptions about how resources are layed out in the filesystem relative to the workspace.  It's important to remember that IProjects may live anywhere on disk, and IResources in general may be links to anywhere on disk.  As a result when trying to resolve an filesystem location to a workpace full path, you must use the workspace methods #{get|find}{Files|Containers}ForLocation.

Performance of this has been improved in 3.7.  If it's still suboptimal, please file a bug against core.resources.