code: public File getFile(VirtualFile mountPoint, VirtualFile target) throws IOException {
          final ZipNode zipNode = getExistingZipNode(mountPoint, target);
          // check if we have cached one already
          File cachedFile = zipNode.cachedFile;
          if (cachedFile != null) {
              return cachedFile;
          }
          synchronized (zipNode) {
              // double-check
              cachedFile = zipNode.cachedFile;
              if (cachedFile != null) {
                  return cachedFile;
              }
  
              // nope, create a cached temp
              final JarEntry zipEntry = zipNode.entry;
              String name = target.getPathNameRelativeTo(mountPoint);
              cachedFile = buildFile(contentsDir, name);
              if (zipEntry == null) {
                  cachedFile.mkdir();
              } else {
                  VFSUtils.copyStreamAndClose(zipFile.getInputStream(zipEntry), new BufferedOutputStream(new FileOutputStream(cachedFile)));
              }
  
              zipNode.cachedFile = cachedFile;
              return cachedFile;
          }
      }
docs: {@inheritDoc}