FOREIGN MODULE java_lang_annotation;

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

TYPE

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

  AnnotationFormatError* = POINTER TO EXTENSIBLE RECORD (java_lang.Error)
                           STATIC
                             PROCEDURE Init*(p0 : java_lang.Throwable) : AnnotationFormatError,CONSTRUCTOR;
                             PROCEDURE Init*(p0 : java_lang.String;
                                             p1 : java_lang.Throwable) : AnnotationFormatError,CONSTRUCTOR;
                             PROCEDURE Init*(p0 : java_lang.String) : AnnotationFormatError,CONSTRUCTOR;
                           END;

  AnnotationTypeMismatchException* = POINTER TO EXTENSIBLE RECORD (java_lang.RuntimeException)    (* Typebound Procedures *)
                                     STATIC
                                       PROCEDURE Init*(p0 : java_lang_reflect.Method;
                                                       p1 : java_lang.String) : AnnotationTypeMismatchException,CONSTRUCTOR;
                                     END;

  Documented* = POINTER TO INTERFACE RECORD (java_lang.Object + Annotation)
                END;

  ElementType* = POINTER TO RECORD (java_lang.Enum)
                 STATIC
                   ANNOTATION_TYPE* : ElementType;
                   CONSTRUCTOR*     : ElementType;
                   FIELD*           : ElementType;
                   LOCAL_VARIABLE*  : ElementType;
                   METHOD*          : ElementType;
                   PACKAGE*         : ElementType;
                   PARAMETER*       : ElementType;
                   TYPE*            : ElementType;
                   PROCEDURE valueOf*(p0 : java_lang.String) : ElementType;
                   PROCEDURE values*() : POINTER TO ARRAY OF ElementType;
                 END;

  IncompleteAnnotationException* = POINTER TO EXTENSIBLE RECORD (java_lang.RuntimeException)    (* Typebound Procedures *)
                                   STATIC
                                     PROCEDURE Init*(p0 : java_lang.Class;
                                                     p1 : java_lang.String) : IncompleteAnnotationException,CONSTRUCTOR;
                                   END;

  Inherited* = POINTER TO INTERFACE RECORD (java_lang.Object + Annotation)
               END;

  Retention* = POINTER TO INTERFACE RECORD (java_lang.Object + Annotation)    (* Typebound Procedures *)
               END;

  RetentionPolicy* = POINTER TO RECORD (java_lang.Enum)
                     STATIC
                       CLASS*   : RetentionPolicy;
                       RUNTIME* : RetentionPolicy;
                       SOURCE*  : RetentionPolicy;
                       PROCEDURE valueOf*(p0 : java_lang.String) : RetentionPolicy;
                       PROCEDURE values*() : POINTER TO ARRAY OF RetentionPolicy;
                     END;

  Target* = POINTER TO INTERFACE RECORD (java_lang.Object + Annotation)    (* Typebound Procedures *)
            END;




PROCEDURE (self:Annotation) annotationType*() : java_lang.Class,NEW,ABSTRACT;

PROCEDURE (self:Annotation) equals*(p0 : java_lang.Object) : BOOLEAN,ABSTRACT;

PROCEDURE (self:Annotation) hashCode*() : INTEGER,ABSTRACT;

PROCEDURE (self:Annotation) toString*() : java_lang.String,ABSTRACT;

PROCEDURE (self:AnnotationTypeMismatchException) element*() : java_lang_reflect.Method,NEW,EXTENSIBLE;

PROCEDURE (self:AnnotationTypeMismatchException) foundType*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:IncompleteAnnotationException) annotationType*() : java_lang.Class,NEW,EXTENSIBLE;

PROCEDURE (self:IncompleteAnnotationException) elementName*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:Retention) value*() : RetentionPolicy,NEW,ABSTRACT;

PROCEDURE (self:Target) value*() : POINTER TO ARRAY OF ElementType,NEW,ABSTRACT;

END java_lang_annotation.