FOREIGN MODULE java_lang_ref;

IMPORT
    java_security := "java.security",
    java_lang := "java.lang",
    sun_nio_ch := "sun.nio.ch",
    sun_misc := "sun.misc",
    java_util := "java.util";

TYPE

  PhantomReference* = POINTER TO EXTENSIBLE RECORD (Reference)    (* Typebound Procedures *)
                      STATIC
                        PROCEDURE Init*(p0 : java_lang.Object;
                                        p1 : ReferenceQueue) : PhantomReference,CONSTRUCTOR;
                      END;

  Reference* = POINTER TO ABSTRACT RECORD (java_lang.Object)    (* Typebound Procedures *)
               END;

  ReferenceQueue* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)    (* Typebound Procedures *)
                    STATIC
                      PROCEDURE Init*() : ReferenceQueue,CONSTRUCTOR;
                    END;

  SoftReference* = POINTER TO EXTENSIBLE RECORD (Reference)    (* Typebound Procedures *)
                   STATIC
                     PROCEDURE Init*(p0 : java_lang.Object;
                                     p1 : ReferenceQueue) : SoftReference,CONSTRUCTOR;
                     PROCEDURE Init*(p0 : java_lang.Object) : SoftReference,CONSTRUCTOR;
                   END;

  WeakReference* = POINTER TO EXTENSIBLE RECORD (Reference)
                   STATIC
                     PROCEDURE Init*(p0 : java_lang.Object;
                                     p1 : ReferenceQueue) : WeakReference,CONSTRUCTOR;
                     PROCEDURE Init*(p0 : java_lang.Object) : WeakReference,CONSTRUCTOR;
                   END;




PROCEDURE (self:PhantomReference) get*() : java_lang.Object,EXTENSIBLE;

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

PROCEDURE (self:Reference) enqueue*() : BOOLEAN,NEW,EXTENSIBLE;

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

PROCEDURE (self:Reference) isEnqueued*() : BOOLEAN,NEW,EXTENSIBLE;

PROCEDURE (self:ReferenceQueue) poll*() : Reference,NEW,EXTENSIBLE;

PROCEDURE (self:ReferenceQueue) remove*() : Reference,NEW,EXTENSIBLE;

PROCEDURE (self:ReferenceQueue) remove*(p0 : LONGINT) : Reference,NEW,EXTENSIBLE;

PROCEDURE (self:SoftReference) get*() : java_lang.Object,EXTENSIBLE;

END java_lang_ref.