docs: public InputStream getInputStream() throws IOException {
          try {
              long lastMod = grabLastMod();
              if (lastMod == 0) {
                  //we will try the cache...
                  if (cacheFileExists())
                      return fromCache();
              }
              if (lastMod > 0 && lastMod > lastRead) {
                  if (CACHE_DIR != null && (url.getProtocol().equals("http") || url.getProtocol().equals("https"))) {
                      //lets grab a copy and cache it in case we need it in future...
                      cacheStream();
                      lastMod = getCacheFile().lastModified();
                      this.lastRead = lastMod;
                      return fromCache();
                  }
              }
              this.lastRead = lastMod;
              return grabStream();
          } catch (IOException e) {
              if (cacheFileExists()) {
                  return fromCache();
              } else {
                  throw e;
              }
          }
      }