    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.