FOREIGN MODULE java_lang_ref;

IMPORT
    java_security,
    java_lang;

TYPE

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

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

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

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

  WeakReference* = POINTER TO EXTENSIBLE RECORD (Reference)
                   STATIC
                     PROCEDURE Init*(p0 : java_lang.Object) : WeakReference,CONSTRUCTOR;
                     PROCEDURE Init*(p0 : java_lang.Object;
                                     p1 : ReferenceQueue) : 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.