FOREIGN MODULE sun_reflect_generics_tree;

IMPORT
    sun_reflect_generics_visitor := "sun.reflect.generics.visitor",
    java_lang := "java.lang",
    java_util := "java.util";

TYPE

  ArrayTypeSignature* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + FieldTypeSignature)    (* Typebound Procedures *)
                        STATIC
                          PROCEDURE make*(p0 : TypeSignature) : ArrayTypeSignature;
                        END;

  BaseType* = POINTER TO INTERFACE RECORD (java_lang.Object + TypeSignature)
              END;

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

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

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

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

  ClassSignature* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + Signature)    (* Typebound Procedures *)
                    STATIC
                      PROCEDURE make*(IN  p0 : ARRAY OF FormalTypeParameter;
                                          p1 : ClassTypeSignature;
                                      IN  p2 : ARRAY OF ClassTypeSignature) : ClassSignature;
                    END;

  ClassTypeSignature* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + FieldTypeSignature)    (* Typebound Procedures *)
                        STATIC
                          PROCEDURE make*(p0 : java_util.List) : ClassTypeSignature;
                        END;

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

  FieldTypeSignature* = POINTER TO INTERFACE RECORD (java_lang.Object + BaseType + TypeSignature + TypeArgument)
                        END;

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

  FormalTypeParameter* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + TypeTree)    (* Typebound Procedures *)
                         STATIC
                           PROCEDURE make*(    p0 : java_lang.String;
                                           IN  p1 : ARRAY OF FieldTypeSignature) : FormalTypeParameter;
                         END;

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

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

  MethodTypeSignature* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + Signature)    (* Typebound Procedures *)
                         STATIC
                           PROCEDURE make*(IN  p0 : ARRAY OF FormalTypeParameter;
                                           IN  p1 : ARRAY OF TypeSignature;
                                               p2 : ReturnType;
                                           IN  p3 : ARRAY OF FieldTypeSignature) : MethodTypeSignature;
                         END;

  ReturnType* = POINTER TO INTERFACE RECORD (java_lang.Object + TypeTree)
                END;

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

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

  SimpleClassTypeSignature* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + FieldTypeSignature)    (* Typebound Procedures *)
                              STATIC
                                PROCEDURE make*(    p0 : java_lang.String;
                                                    p1 : BOOLEAN;
                                                IN  p2 : ARRAY OF TypeArgument) : SimpleClassTypeSignature;
                              END;

  Tree* = POINTER TO INTERFACE RECORD (java_lang.Object)
          END;

  TypeArgument* = POINTER TO INTERFACE RECORD (java_lang.Object + TypeTree)
                  END;

  TypeSignature* = POINTER TO INTERFACE RECORD (java_lang.Object + ReturnType)
                   END;

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

  TypeVariableSignature* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + FieldTypeSignature)    (* Typebound Procedures *)
                           STATIC
                             PROCEDURE make*(p0 : java_lang.String) : TypeVariableSignature;
                           END;

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

  Wildcard* = POINTER TO EXTENSIBLE RECORD (java_lang.Object + TypeArgument)    (* Typebound Procedures *)
              STATIC
                PROCEDURE make*(IN  p0 : ARRAY OF FieldTypeSignature;
                                IN  p1 : ARRAY OF FieldTypeSignature) : Wildcard;
              END;




PROCEDURE (self:ArrayTypeSignature) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:ArrayTypeSignature) getComponentType*() : TypeSignature,NEW,EXTENSIBLE;

PROCEDURE (self:BooleanSignature) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:BottomSignature) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:ByteSignature) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:CharSignature) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:ClassSignature) accept*(p0 : sun_reflect_generics_visitor.Visitor),NEW,EXTENSIBLE;

PROCEDURE (self:ClassSignature) getFormalTypeParameters*() : POINTER TO ARRAY OF FormalTypeParameter,NEW,EXTENSIBLE;

PROCEDURE (self:ClassSignature) getSuperclass*() : ClassTypeSignature,NEW,EXTENSIBLE;

PROCEDURE (self:ClassSignature) getSuperInterfaces*() : POINTER TO ARRAY OF ClassTypeSignature,NEW,EXTENSIBLE;

PROCEDURE (self:ClassTypeSignature) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:ClassTypeSignature) getPath*() : java_util.List,NEW,EXTENSIBLE;

PROCEDURE (self:DoubleSignature) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:FloatSignature) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:FormalTypeParameter) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:FormalTypeParameter) getBounds*() : POINTER TO ARRAY OF FieldTypeSignature,NEW,EXTENSIBLE;

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

PROCEDURE (self:IntSignature) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:LongSignature) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:MethodTypeSignature) accept*(p0 : sun_reflect_generics_visitor.Visitor),NEW,EXTENSIBLE;

PROCEDURE (self:MethodTypeSignature) getExceptionTypes*() : POINTER TO ARRAY OF FieldTypeSignature,NEW,EXTENSIBLE;

PROCEDURE (self:MethodTypeSignature) getFormalTypeParameters*() : POINTER TO ARRAY OF FormalTypeParameter,NEW,EXTENSIBLE;

PROCEDURE (self:MethodTypeSignature) getParameterTypes*() : POINTER TO ARRAY OF TypeSignature,NEW,EXTENSIBLE;

PROCEDURE (self:MethodTypeSignature) getReturnType*() : ReturnType,NEW,EXTENSIBLE;

PROCEDURE (self:ShortSignature) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:Signature) getFormalTypeParameters*() : POINTER TO ARRAY OF FormalTypeParameter,NEW,ABSTRACT;

PROCEDURE (self:SimpleClassTypeSignature) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:SimpleClassTypeSignature) getDollar*() : BOOLEAN,NEW,EXTENSIBLE;

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

PROCEDURE (self:SimpleClassTypeSignature) getTypeArguments*() : POINTER TO ARRAY OF TypeArgument,NEW,EXTENSIBLE;

PROCEDURE (self:TypeTree) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,ABSTRACT;

PROCEDURE (self:TypeVariableSignature) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:TypeVariableSignature) getIdentifier*() : java_lang.String,NEW,EXTENSIBLE;

PROCEDURE (self:VoidDescriptor) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:Wildcard) accept*(p0 : sun_reflect_generics_visitor.TypeTreeVisitor),NEW,EXTENSIBLE;

PROCEDURE (self:Wildcard) getLowerBounds*() : POINTER TO ARRAY OF FieldTypeSignature,NEW,EXTENSIBLE;

PROCEDURE (self:Wildcard) getUpperBounds*() : POINTER TO ARRAY OF FieldTypeSignature,NEW,EXTENSIBLE;

END sun_reflect_generics_tree.