Resource (@NotNull String s) { final long started = startTiming(); Resource resource = null; try { String shortName = ClasspathCache.transformName(s); int i; if (myCanUseCache) { boolean allUrlsWereProcessed = myAllUrlsWereProcessed; i = allUrlsWereProcessed ? 0 : myLastLoaderProcessed.get(); resource = myCache.iterateLoaders(s, ourResourceIterator, s, this, shortName); if (resource != null || allUrlsWereProcessed) { return resource; } } else { i = 0; } Loader loader; while ((loader = getLoader(i++)) != null) { if (myCanUseCache && !loader.containsName(s, shortName)) { continue; } resource = loader.getResource(s); if (resource != null) { return resource; } } } finally { logInfo(this, started, s, resource); } return null; }