code: static ZipFile getZipFile(File src, Charset charset) throws IOException {
      if (charset == null) {
        return new ZipFile(src);
      }
  
      try {
        Constructor<ZipFile> constructor = ZipFile.class.getConstructor(new Class[] { File.class, Charset.class });
        return (ZipFile) constructor.newInstance(new Object[] { src, charset });
      }
      catch (NoSuchMethodException e) {
        throw new IllegalStateException(MISSING_METHOD_PLEASE_UPGRADE, e);
      }
      catch (InstantiationException e) {
        throw new IllegalStateException(CONSTRUCTOR_MESSAGE_FOR_ZIPFILE + e.getMessage(), e);
      }
      catch (IllegalAccessException e) {
        throw new IllegalStateException(CONSTRUCTOR_MESSAGE_FOR_ZIPFILE + e.getMessage(), e);
      }
      catch (IllegalArgumentException e) {
        throw new IllegalStateException(CONSTRUCTOR_MESSAGE_FOR_ZIPFILE + e.getMessage(), e);
      }
      catch (InvocationTargetException e) {
        throw new IllegalStateException(CONSTRUCTOR_MESSAGE_FOR_ZIPFILE + e.getMessage(), e);
      }
    }
docs: Returns a zipFile opened with a given charset