code: public static ClassStub parseClass(URL url) throws IOException {
          SoftReference<ClassStub> ref = StubCache.map.get(url);
          ClassStub stub = ref == null ? null : ref.get();
          if (stub == null) {
              DecompilingVisitor visitor = new DecompilingVisitor();
              InputStream stream = url.openStream();
              try {
                  new ClassReader(new BufferedInputStream(stream)).accept(visitor, ClassReader.SKIP_FRAMES);
              } finally {
                  stream.close();
              }
              stub = visitor.result;
              StubCache.map.put(url, new SoftReference<ClassStub>(stub));
          }
          return stub;
      }
docs: Loads the URL contents and parses them with ASM, producing a {@link ClassStub} object representing the structure of
  the corresponding class file. Stubs are cached and reused if queried several times with equal URLs.
  
  @param url an URL from a class loader, most likely a file system file or a JAR entry.
  @return the class stub
  @throws IOException if reading from this URL is impossible