FOREIGN MODULE sun_reflect_generics_repository;

IMPORT
    sun_reflect_generics_factory := "sun.reflect.generics.factory",
    sun_reflect_generics_tree := "sun.reflect.generics.tree",
    sun_reflect_generics_visitor := "sun.reflect.generics.visitor",
    java_lang := "java.lang",
    java_lang_reflect := "java.lang.reflect";

TYPE

  AbstractRepository* = POINTER TO ABSTRACT RECORD (java_lang.Object)    (* Typebound Procedures *)
                        STATIC
                          PROCEDURE Init!(p0 : java_lang.String;
                                          p1 : sun_reflect_generics_factory.GenericsFactory) : AbstractRepository,CONSTRUCTOR;
                        END;

  ClassRepository* = POINTER TO EXTENSIBLE RECORD (GenericDeclRepository)    (* Typebound Procedures *)
                     STATIC
                       PROCEDURE make*(p0 : java_lang.String;
                                       p1 : sun_reflect_generics_factory.GenericsFactory) : ClassRepository;
                     END;

  ConstructorRepository* = POINTER TO EXTENSIBLE RECORD (GenericDeclRepository)    (* Typebound Procedures *)
                           STATIC
                             PROCEDURE Init!(p0 : java_lang.String;
                                             p1 : sun_reflect_generics_factory.GenericsFactory) : ConstructorRepository,CONSTRUCTOR;
                             PROCEDURE make*(p0 : java_lang.String;
                                             p1 : sun_reflect_generics_factory.GenericsFactory) : ConstructorRepository;
                           END;

  FieldRepository* = POINTER TO EXTENSIBLE RECORD (AbstractRepository)    (* Typebound Procedures *)
                     STATIC
                       PROCEDURE Init!(p0 : java_lang.String;
                                       p1 : sun_reflect_generics_factory.GenericsFactory) : FieldRepository,CONSTRUCTOR;
                       PROCEDURE make*(p0 : java_lang.String;
                                       p1 : sun_reflect_generics_factory.GenericsFactory) : FieldRepository;
                     END;

  GenericDeclRepository* = POINTER TO ABSTRACT RECORD (AbstractRepository)    (* Typebound Procedures *)
                           STATIC
                             PROCEDURE Init!(p0 : java_lang.String;
                                             p1 : sun_reflect_generics_factory.GenericsFactory) : GenericDeclRepository,CONSTRUCTOR;
                           END;

  MethodRepository* = POINTER TO EXTENSIBLE RECORD (ConstructorRepository)    (* Typebound Procedures *)
                      STATIC
                        PROCEDURE make*(p0 : java_lang.String;
                                        p1 : sun_reflect_generics_factory.GenericsFactory) : MethodRepository;
                      END;




PROCEDURE (self:AbstractRepository) getReifier!() : sun_reflect_generics_visitor.Reifier,NEW,EXTENSIBLE;

PROCEDURE (self:AbstractRepository) getTree!() : sun_reflect_generics_tree.Tree,NEW,EXTENSIBLE;

PROCEDURE (self:AbstractRepository) parse!(p0 : java_lang.String) : sun_reflect_generics_tree.Tree,NEW,ABSTRACT;

PROCEDURE (self:ClassRepository) getSuperclass*() : java_lang_reflect.Type,NEW,EXTENSIBLE;

PROCEDURE (self:ClassRepository) getSuperInterfaces*() : POINTER TO ARRAY OF java_lang_reflect.Type,NEW,EXTENSIBLE;

PROCEDURE (self:ClassRepository) parse!(p0 : java_lang.String) : sun_reflect_generics_tree.Tree,EXTENSIBLE;

PROCEDURE (self:ClassRepository) parse!(p0 : java_lang.String) : sun_reflect_generics_tree.ClassSignature,NEW,EXTENSIBLE;

PROCEDURE (self:ConstructorRepository) getExceptionTypes*() : POINTER TO ARRAY OF java_lang_reflect.Type,NEW,EXTENSIBLE;

PROCEDURE (self:ConstructorRepository) getParameterTypes*() : POINTER TO ARRAY OF java_lang_reflect.Type,NEW,EXTENSIBLE;

PROCEDURE (self:ConstructorRepository) parse!(p0 : java_lang.String) : sun_reflect_generics_tree.Tree,EXTENSIBLE;

PROCEDURE (self:ConstructorRepository) parse!(p0 : java_lang.String) : sun_reflect_generics_tree.MethodTypeSignature,NEW,EXTENSIBLE;

PROCEDURE (self:FieldRepository) getGenericType*() : java_lang_reflect.Type,NEW,EXTENSIBLE;

PROCEDURE (self:FieldRepository) parse!(p0 : java_lang.String) : sun_reflect_generics_tree.Tree,EXTENSIBLE;

PROCEDURE (self:FieldRepository) parse!(p0 : java_lang.String) : sun_reflect_generics_tree.TypeSignature,NEW,EXTENSIBLE;

PROCEDURE (self:GenericDeclRepository) getTypeParameters*() : POINTER TO ARRAY OF java_lang_reflect.TypeVariable,NEW,EXTENSIBLE;

PROCEDURE (self:MethodRepository) getReturnType*() : java_lang_reflect.Type,NEW,EXTENSIBLE;

END sun_reflect_generics_repository.