@Nullable
  public Resource getResource(@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;
  }
@Nullable
  public Resource getResource(@NotNull String s)