FOREIGN MODULE sun_reflect_generics_scope;

IMPORT
    java_lang_reflect := "java.lang.reflect",
    java_lang := "java.lang";

TYPE

  AbstractScope* = POINTER TO ABSTRACT RECORD (java_lang.Object + Scope)    (* Typebound Procedures *)
                   STATIC
                     PROCEDURE Init!(p0 : java_lang_reflect.GenericDeclaration) : AbstractScope,CONSTRUCTOR;
                   END;

  ClassScope* = POINTER TO EXTENSIBLE RECORD (AbstractScope + Scope)    (* Typebound Procedures *)
                STATIC
                  PROCEDURE make*(p0 : java_lang.Class) : ClassScope;
                END;

  ConstructorScope* = POINTER TO EXTENSIBLE RECORD (AbstractScope)    (* Typebound Procedures *)
                      STATIC
                        PROCEDURE make*(p0 : java_lang_reflect.Constructor) : ConstructorScope;
                      END;

  DummyScope* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + Scope)    (* Typebound Procedures *)
                STATIC
                  PROCEDURE make*() : DummyScope;
                END;

  MethodScope* = POINTER TO EXTENSIBLE RECORD (AbstractScope)    (* Typebound Procedures *)
                 STATIC
                   PROCEDURE make*(p0 : java_lang_reflect.Method) : MethodScope;
                 END;

  Scope* = POINTER TO INTERFACE RECORD (java_lang.Object)    (* Typebound Procedures *)
           END;




PROCEDURE (self:AbstractScope) computeEnclosingScope!() : Scope,NEW,ABSTRACT;

PROCEDURE (self:AbstractScope) getEnclosingScope!() : Scope,NEW,EXTENSIBLE;

PROCEDURE (self:AbstractScope) getRecvr!() : java_lang_reflect.GenericDeclaration,NEW,EXTENSIBLE;

PROCEDURE (self:AbstractScope) lookup*(p0 : java_lang.String) : java_lang_reflect.TypeVariable,NEW,EXTENSIBLE;

PROCEDURE (self:ClassScope) computeEnclosingScope!() : Scope,EXTENSIBLE;

PROCEDURE (self:ConstructorScope) computeEnclosingScope!() : Scope,EXTENSIBLE;

PROCEDURE (self:DummyScope) lookup*(p0 : java_lang.String) : java_lang_reflect.TypeVariable,NEW,EXTENSIBLE;

PROCEDURE (self:MethodScope) computeEnclosingScope!() : Scope,EXTENSIBLE;

PROCEDURE (self:Scope) lookup*(p0 : java_lang.String) : java_lang_reflect.TypeVariable,NEW,ABSTRACT;

END sun_reflect_generics_scope.