FOREIGN MODULE java_lang_reflect;

IMPORT
    java_security,
    java_lang,
    java_io;

TYPE

  AccessibleObject* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)
                      STATIC
                        PROCEDURE Init!() : AccessibleObject,CONSTRUCTOR;
                        PROCEDURE setAccessible*(IN  p0 : ARRAY OF AccessibleObject;
                                                     p1 : BOOLEAN);
                      END;

  Array* = POINTER TO RECORD (java_lang.Object)
           STATIC
             PROCEDURE get*(p0 : java_lang.Object;
                            p1 : INTEGER) : java_lang.Object;
             PROCEDURE getBoolean*(p0 : java_lang.Object;
                                   p1 : INTEGER) : BOOLEAN;
             PROCEDURE getByte*(p0 : java_lang.Object;
                                p1 : INTEGER) : BYTE;
             PROCEDURE getChar*(p0 : java_lang.Object;
                                p1 : INTEGER) : CHAR;
             PROCEDURE getDouble*(p0 : java_lang.Object;
                                  p1 : INTEGER) : REAL;
             PROCEDURE getFloat*(p0 : java_lang.Object;
                                 p1 : INTEGER) : SHORTREAL;
             PROCEDURE getInt*(p0 : java_lang.Object;
                               p1 : INTEGER) : INTEGER;
             PROCEDURE getLength*(p0 : java_lang.Object) : INTEGER;
             PROCEDURE getLong*(p0 : java_lang.Object;
                                p1 : INTEGER) : LONGINT;
             PROCEDURE getShort*(p0 : java_lang.Object;
                                 p1 : INTEGER) : SHORTINT;
             PROCEDURE newInstance*(p0 : java_lang.Class;
                                    p1 : INTEGER) : java_lang.Object;
             PROCEDURE newInstance*(    p0 : java_lang.Class;
                                    IN  p1 : ARRAY OF INTEGER) : java_lang.Object;
             PROCEDURE set*(p0 : java_lang.Object;
                            p1 : INTEGER;
                            p2 : java_lang.Object);
             PROCEDURE setBoolean*(p0 : java_lang.Object;
                                   p1 : INTEGER;
                                   p2 : BOOLEAN);
             PROCEDURE setByte*(p0 : java_lang.Object;
                                p1 : INTEGER;
                                p2 : BYTE);
             PROCEDURE setChar*(p0 : java_lang.Object;
                                p1 : INTEGER;
                                p2 : CHAR);
             PROCEDURE setDouble*(p0 : java_lang.Object;
                                  p1 : INTEGER;
                                  p2 : REAL);
             PROCEDURE setFloat*(p0 : java_lang.Object;
                                 p1 : INTEGER;
                                 p2 : SHORTREAL);
             PROCEDURE setInt*(p0 : java_lang.Object;
                               p1 : INTEGER;
                               p2 : INTEGER);
             PROCEDURE setLong*(p0 : java_lang.Object;
                                p1 : INTEGER;
                                p2 : LONGINT);
             PROCEDURE setShort*(p0 : java_lang.Object;
                                 p1 : INTEGER;
                                 p2 : SHORTINT);
           END;

  Constructor* = POINTER TO RECORD (AccessibleObject + Member)
                 END;

  Field* = POINTER TO RECORD (AccessibleObject + Member)
           END;

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

  Member* = POINTER TO INTERFACE RECORD (java_lang.Object)
            STATIC
              PUBLIC* = 0;
              DECLARED* = 1;
            END;

  Method* = POINTER TO RECORD (AccessibleObject + Member)
            END;

  Modifier* = POINTER TO EXTENSIBLE RECORD (java_lang.Object)
              STATIC
                PUBLIC* = 1;
                PRIVATE* = 2;
                PROTECTED* = 4;
                STATIC* = 8;
                FINAL* = 16;
                SYNCHRONIZED* = 32;
                VOLATILE* = 64;
                TRANSIENT* = 128;
                NATIVE* = 256;
                INTERFACE* = 512;
                ABSTRACT* = 1024;
                STRICT* = 2048;
                PROCEDURE Init*() : Modifier,CONSTRUCTOR;
                PROCEDURE isAbstract*(p0 : INTEGER) : BOOLEAN;
                PROCEDURE isFinal*(p0 : INTEGER) : BOOLEAN;
                PROCEDURE isInterface*(p0 : INTEGER) : BOOLEAN;
                PROCEDURE isNative*(p0 : INTEGER) : BOOLEAN;
                PROCEDURE isPrivate*(p0 : INTEGER) : BOOLEAN;
                PROCEDURE isProtected*(p0 : INTEGER) : BOOLEAN;
                PROCEDURE isPublic*(p0 : INTEGER) : BOOLEAN;
                PROCEDURE isStatic*(p0 : INTEGER) : BOOLEAN;
                PROCEDURE isStrict*(p0 : INTEGER) : BOOLEAN;
                PROCEDURE isSynchronized*(p0 : INTEGER) : BOOLEAN;
                PROCEDURE isTransient*(p0 : INTEGER) : BOOLEAN;
                PROCEDURE isVolatile*(p0 : INTEGER) : BOOLEAN;
                PROCEDURE toString*(p0 : INTEGER) : java_lang.String;
              END;

  ReflectPermission* = POINTER TO RECORD (java_security.BasicPermission)
                       STATIC
                         PROCEDURE Init*(p0 : java_lang.String) : ReflectPermission,CONSTRUCTOR;
                         PROCEDURE Init*(p0 : java_lang.String;
                                         p1 : java_lang.String) : ReflectPermission,CONSTRUCTOR;
                       END;




PROCEDURE (self:AccessibleObject) isAccessible*() : BOOLEAN,NEW,EXTENSIBLE;

PROCEDURE (self:AccessibleObject) setAccessible*(p0 : BOOLEAN),NEW,EXTENSIBLE;

PROCEDURE (self:Constructor) equals*(p0 : java_lang.Object) : BOOLEAN,EXTENSIBLE;

PROCEDURE (self:Constructor) getDeclaringClass*() : java_lang.Class,NEW,EXTENSIBLE;

PROCEDURE (self:Constructor) getExceptionTypes*() : POINTER TO ARRAY OF java_lang.Class,NEW,EXTENSIBLE;

PROCEDURE (self:Constructor) getModifiers*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:Constructor) getName*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:Constructor) getParameterTypes*() : POINTER TO ARRAY OF java_lang.Class,NEW,EXTENSIBLE;

PROCEDURE (self:Constructor) hashCode*() : INTEGER,EXTENSIBLE;

PROCEDURE (self:Constructor) newInstance*(IN  p0 : ARRAY OF java_lang.Object) : java_lang.Object,NEW,EXTENSIBLE;

PROCEDURE (self:Constructor) toString*() : java_lang.String,EXTENSIBLE;

PROCEDURE (self:Field) equals*(p0 : java_lang.Object) : BOOLEAN,EXTENSIBLE;

PROCEDURE (self:Field) get*(p0 : java_lang.Object) : java_lang.Object,NEW,EXTENSIBLE;

PROCEDURE (self:Field) getBoolean*(p0 : java_lang.Object) : BOOLEAN,NEW,EXTENSIBLE;

PROCEDURE (self:Field) getByte*(p0 : java_lang.Object) : BYTE,NEW,EXTENSIBLE;

PROCEDURE (self:Field) getChar*(p0 : java_lang.Object) : CHAR,NEW,EXTENSIBLE;

PROCEDURE (self:Field) getDeclaringClass*() : java_lang.Class,NEW,EXTENSIBLE;

PROCEDURE (self:Field) getDouble*(p0 : java_lang.Object) : REAL,NEW,EXTENSIBLE;

PROCEDURE (self:Field) getFloat*(p0 : java_lang.Object) : SHORTREAL,NEW,EXTENSIBLE;

PROCEDURE (self:Field) getInt*(p0 : java_lang.Object) : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:Field) getLong*(p0 : java_lang.Object) : LONGINT,NEW,EXTENSIBLE;

PROCEDURE (self:Field) getModifiers*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:Field) getName*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:Field) getShort*(p0 : java_lang.Object) : SHORTINT,NEW,EXTENSIBLE;

PROCEDURE (self:Field) getType*() : java_lang.Class,NEW,EXTENSIBLE;

PROCEDURE (self:Field) hashCode*() : INTEGER,EXTENSIBLE;

PROCEDURE (self:Field) set*(p0 : java_lang.Object;
                            p1 : java_lang.Object),NEW,EXTENSIBLE;

PROCEDURE (self:Field) setBoolean*(p0 : java_lang.Object;
                                   p1 : BOOLEAN),NEW,EXTENSIBLE;

PROCEDURE (self:Field) setByte*(p0 : java_lang.Object;
                                p1 : BYTE),NEW,EXTENSIBLE;

PROCEDURE (self:Field) setChar*(p0 : java_lang.Object;
                                p1 : CHAR),NEW,EXTENSIBLE;

PROCEDURE (self:Field) setDouble*(p0 : java_lang.Object;
                                  p1 : REAL),NEW,EXTENSIBLE;

PROCEDURE (self:Field) setFloat*(p0 : java_lang.Object;
                                 p1 : SHORTREAL),NEW,EXTENSIBLE;

PROCEDURE (self:Field) setInt*(p0 : java_lang.Object;
                               p1 : INTEGER),NEW,EXTENSIBLE;

PROCEDURE (self:Field) setLong*(p0 : java_lang.Object;
                                p1 : LONGINT),NEW,EXTENSIBLE;

PROCEDURE (self:Field) setShort*(p0 : java_lang.Object;
                                 p1 : SHORTINT),NEW,EXTENSIBLE;

PROCEDURE (self:Field) toString*() : java_lang.String,EXTENSIBLE;

PROCEDURE (self:InvocationTargetException) getTargetException*() : java_lang.Throwable,NEW,EXTENSIBLE;

PROCEDURE (self:InvocationTargetException) printStackTrace*(),EXTENSIBLE;

PROCEDURE (self:InvocationTargetException) printStackTrace*(p0 : java_io.PrintStream),EXTENSIBLE;

PROCEDURE (self:InvocationTargetException) printStackTrace*(p0 : java_io.PrintWriter),EXTENSIBLE;

PROCEDURE (self:Member) getDeclaringClass*() : java_lang.Class,NEW,ABSTRACT;

PROCEDURE (self:Member) getModifiers*() : INTEGER,NEW,ABSTRACT;

PROCEDURE (self:Member) getName*() : java_lang.String,NEW,ABSTRACT;

PROCEDURE (self:Method) equals*(p0 : java_lang.Object) : BOOLEAN,EXTENSIBLE;

PROCEDURE (self:Method) getDeclaringClass*() : java_lang.Class,NEW,EXTENSIBLE;

PROCEDURE (self:Method) getExceptionTypes*() : POINTER TO ARRAY OF java_lang.Class,NEW,EXTENSIBLE;

PROCEDURE (self:Method) getModifiers*() : INTEGER,NEW,EXTENSIBLE;

PROCEDURE (self:Method) getName*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:Method) getParameterTypes*() : POINTER TO ARRAY OF java_lang.Class,NEW,EXTENSIBLE;

PROCEDURE (self:Method) getReturnType*() : java_lang.Class,NEW,EXTENSIBLE;

PROCEDURE (self:Method) hashCode*() : INTEGER,EXTENSIBLE;

PROCEDURE (self:Method) invoke*(    p0 : java_lang.Object;
                                IN  p1 : ARRAY OF java_lang.Object) : java_lang.Object,NEW,EXTENSIBLE;

PROCEDURE (self:Method) toString*() : java_lang.String,EXTENSIBLE;

END java_lang_reflect.