// Optimization: cache package fragment root handle and package handles
if (this.lastPkgFragmentRootPath == null
|| this.lastPkgFragmentRootPath.length() > resourcePath.length()
|| !resourcePath.startsWith(this.lastPkgFragmentRootPath)) {
String jarPath= resourcePath.substring(0, separatorIndex);
IPackageFragmentRoot root= ((JavaSearchScope)this.scope).packageFragmentRoot(resourcePath);
if (root == null) return null;
this.lastPkgFragmentRootPath= jarPath;
this.lastPkgFragmentRoot= root;
this.packageHandles= new HashtableOfArrayToObject(5);
}