IFolder unpackedFolder = getUnpackedArchiveFolder(archive);
if (isUnpackNeeded(archive, unpackedFolder)) {
Job[] currentJobs = Job.getJobManager().find(unpackedFolder);
if (currentJobs.length == 0) {
Job job = new UnpackArchiveJob(NLS.bind(Messages.OverlayVirtualArchiveComponent_Unpacking_Job,archive.getName()), archive, unpackedFolder);
job.schedule();
}
root = new ResourceListVirtualFolder(getProject(), getRuntimePath(), new IContainer[] {});
} else {
if (cachedRoot != null && (System.currentTimeMillis() - lastCacheUpdate) < MAX_CACHE){