    FOREIGN MODULE java_util_jar;

    IMPORT
        java_lang,
        java_util,
        java_io,
        java_util_zip,
        java_security_cert,
        sun_security_util;

    TYPE

      Attributes$Name* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)
                         STATIC
                           MANIFEST_VERSION* : Attributes$Name;
                           SIGNATURE_VERSION* : Attributes$Name;
                           CONTENT_TYPE* : Attributes$Name;
                           CLASS_PATH* : Attributes$Name;
                           MAIN_CLASS* : Attributes$Name;
                           SEALED* : Attributes$Name;
                           IMPLEMENTATION_TITLE* : Attributes$Name;
                           IMPLEMENTATION_VERSION* : Attributes$Name;
                           IMPLEMENTATION_VENDOR* : Attributes$Name;
                           SPECIFICATION_TITLE* : Attributes$Name;
                           SPECIFICATION_VERSION* : Attributes$Name;
                           SPECIFICATION_VENDOR* : Attributes$Name;
                           PROCEDURE Init*(p0 : java_lang.String) : Attributes$Name,CONSTRUCTOR;
                         END;

      Attributes* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + java_util.Map + java_lang.Cloneable)
                      map! : java_util.Map;
                    STATIC
                      PROCEDURE Init*() : Attributes,CONSTRUCTOR;
                      PROCEDURE Init*(p0 : INTEGER) : Attributes,CONSTRUCTOR;
                      PROCEDURE Init*(p0 : Attributes) : Attributes,CONSTRUCTOR;
                    END;

      JarEntry* = POINTER TO EXTENSIBLE RECORD (java_util_zip.ZipEntry)
                  STATIC
                    PROCEDURE Init*(p0 : java_lang.String) : JarEntry,CONSTRUCTOR;
                    PROCEDURE Init*(p0 : JarEntry) : JarEntry,CONSTRUCTOR;
                    PROCEDURE Init*(p0 : java_util_zip.ZipEntry) : JarEntry,CONSTRUCTOR;
                  END;

      JarException* = POINTER TO EXTENSIBLE RECORD (java_util_zip.ZipException)
                      STATIC
                        PROCEDURE Init*() : JarException,CONSTRUCTOR;
                        PROCEDURE Init*(p0 : java_lang.String) : JarException,CONSTRUCTOR;
                      END;

      JarFile* = POINTER TO EXTENSIBLE RECORD (java_util_zip.ZipFile)
                 STATIC
                   MANIFEST_NAME* = "META-INF/MANIFEST.MF";
                   PROCEDURE Init*(p0 : java_io.File) : JarFile,CONSTRUCTOR;
                   PROCEDURE Init*(p0 : java_io.File;
                                   p1 : BOOLEAN) : JarFile,CONSTRUCTOR;
                   PROCEDURE Init*(p0 : java_lang.String) : JarFile,CONSTRUCTOR;
                   PROCEDURE Init*(p0 : java_lang.String;
                                   p1 : BOOLEAN) : JarFile,CONSTRUCTOR;
                 END;

      JarInputStream* = POINTER TO EXTENSIBLE RECORD (java_util_zip.ZipInputStream)
                        STATIC
                          PROCEDURE Init*(p0 : java_io.InputStream) : JarInputStream,CONSTRUCTOR;
                          PROCEDURE Init*(p0 : java_io.InputStream;
                                          p1 : BOOLEAN) : JarInputStream,CONSTRUCTOR;
                        END;

      JarOutputStream* = POINTER TO EXTENSIBLE RECORD (java_util_zip.ZipOutputStream)
                         STATIC
                           PROCEDURE Init*(p0 : java_io.OutputStream) : JarOutputStream,CONSTRUCTOR;
                           PROCEDURE Init*(p0 : java_io.OutputStream;
                                           p1 : Manifest) : JarOutputStream,CONSTRUCTOR;
                         END;

      Manifest* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + java_lang.Cloneable)
                  STATIC
                    PROCEDURE Init*() : Manifest,CONSTRUCTOR;
                    PROCEDURE Init*(p0 : java_io.InputStream) : Manifest,CONSTRUCTOR;
                    PROCEDURE Init*(p0 : Manifest) : Manifest,CONSTRUCTOR;
                  END;

    PROCEDURE (self:Attributes$Name) equals*(p0 : java_lang.Object) : BOOLEAN,EXTENSIBLE;

    PROCEDURE (self:Attributes$Name) hashCode*() : INTEGER,EXTENSIBLE;

    PROCEDURE (self:Attributes$Name) toString*() : java_lang.String,EXTENSIBLE;

    PROCEDURE (self:Attributes) clear*(),NEW,EXTENSIBLE;

    PROCEDURE (self:Attributes) clone*() : java_lang.Object,EXTENSIBLE;

    PROCEDURE (self:Attributes) containsKey*(p0 : java_lang.Object) : BOOLEAN,NEW,EXTENSIBLE;

    PROCEDURE (self:Attributes) containsValue*(p0 : java_lang.Object) : BOOLEAN,NEW,EXTENSIBLE;

    PROCEDURE (self:Attributes) entrySet*() : java_util.Set,NEW,EXTENSIBLE;

    PROCEDURE (self:Attributes) equals*(p0 : java_lang.Object) : BOOLEAN,EXTENSIBLE;

    PROCEDURE (self:Attributes) get*(p0 : java_lang.Object) : java_lang.Object,NEW,EXTENSIBLE;

    PROCEDURE (self:Attributes) getValue*(p0 : java_lang.String) : java_lang.String,NEW,EXTENSIBLE;

    PROCEDURE (self:Attributes) getValue*(p0 : Attributes$Name) : java_lang.String,NEW,EXTENSIBLE;

    PROCEDURE (self:Attributes) hashCode*() : INTEGER,EXTENSIBLE;

    PROCEDURE (self:Attributes) isEmpty*() : BOOLEAN,NEW,EXTENSIBLE;

    PROCEDURE (self:Attributes) keySet*() : java_util.Set,NEW,EXTENSIBLE;

    PROCEDURE (self:Attributes) put*(p0 : java_lang.Object;
                                     p1 : java_lang.Object) : java_lang.Object,NEW,EXTENSIBLE;

    PROCEDURE (self:Attributes) putAll*(p0 : java_util.Map),NEW,EXTENSIBLE;

    PROCEDURE (self:Attributes) putValue*(p0 : java_lang.String;
                                          p1 : java_lang.String) : java_lang.String,NEW,EXTENSIBLE;

    PROCEDURE (self:Attributes) remove*(p0 : java_lang.Object) : java_lang.Object,NEW,EXTENSIBLE;

    PROCEDURE (self:Attributes) size*() : INTEGER,NEW,EXTENSIBLE;

    PROCEDURE (self:Attributes) values*() : java_util.Collection,NEW,EXTENSIBLE;

    PROCEDURE (self:JarEntry) getAttributes*() : Attributes,NEW,EXTENSIBLE;

    PROCEDURE (self:JarEntry) getCertificates*() : POINTER TO ARRAY OF java_security_cert.Certificate,NEW,EXTENSIBLE;

    PROCEDURE (self:JarFile) entries*() : java_util.Enumeration,EXTENSIBLE;

    PROCEDURE (self:JarFile) getEntry*(p0 : java_lang.String) : java_util_zip.ZipEntry,EXTENSIBLE;

    PROCEDURE (self:JarFile) getInputStream*(p0 : java_util_zip.ZipEntry) : java_io.InputStream,EXTENSIBLE;

    PROCEDURE (self:JarFile) getJarEntry*(p0 : java_lang.String) : JarEntry,NEW,EXTENSIBLE;

    PROCEDURE (self:JarFile) getManifest*() : Manifest,NEW,EXTENSIBLE;

    PROCEDURE (self:JarInputStream) createZipEntry!(p0 : java_lang.String) : java_util_zip.ZipEntry,EXTENSIBLE;

    PROCEDURE (self:JarInputStream) getManifest*() : Manifest,NEW,EXTENSIBLE;

    PROCEDURE (self:JarInputStream) getNextEntry*() : java_util_zip.ZipEntry,EXTENSIBLE;

    PROCEDURE (self:JarInputStream) getNextJarEntry*() : JarEntry,NEW,EXTENSIBLE;

    PROCEDURE (self:JarInputStream) read*(IN  p0 : ARRAY OF BYTE;
                                              p1 : INTEGER;
                                              p2 : INTEGER) : INTEGER,EXTENSIBLE;

    PROCEDURE (self:JarOutputStream) putNextEntry*(p0 : java_util_zip.ZipEntry),EXTENSIBLE;

    PROCEDURE (self:Manifest) clear*(),NEW,EXTENSIBLE;

    PROCEDURE (self:Manifest) clone*() : java_lang.Object,EXTENSIBLE;

    PROCEDURE (self:Manifest) equals*(p0 : java_lang.Object) : BOOLEAN,EXTENSIBLE;

    PROCEDURE (self:Manifest) getAttributes*(p0 : java_lang.String) : Attributes,NEW,EXTENSIBLE;

    PROCEDURE (self:Manifest) getEntries*() : java_util.Map,NEW,EXTENSIBLE;

    PROCEDURE (self:Manifest) getMainAttributes*() : Attributes,NEW,EXTENSIBLE;

    PROCEDURE (self:Manifest) hashCode*() : INTEGER,EXTENSIBLE;

    PROCEDURE (self:Manifest) read*(p0 : java_io.InputStream),NEW,EXTENSIBLE;

    PROCEDURE (self:Manifest) write*(p0 : java_io.OutputStream),NEW,EXTENSIBLE;

    END java_util_jar.