--------------------------------------------------------------------------------
-- <auto-generated>                                                           --
--     This code was generated by a tool.                                     --
--                                                                            --
--     Changes to this file may cause incorrect behavior and will be lost if  --
--     the code is regenerated.                                               --
-- </auto-generated>                                                          --
--------------------------------------------------------------------------------
--------------------------------------------------------------------------------
--                                                                            --
--    Copyright(c) 2019 Alexander Gamper, All Rights Reserved.                --
--                                                                            --
--    Ada-NetFramework                                                        --
--    Version   : 1.0.0.0                                                     --
--                                                                            --
-- This program is free software: you can redistribute it and / or modify     --
-- it under the terms of the GNU Lesser General Public License as published by--
-- the Free Software Foundation, either version 3 of the License, or          --
-- (at your option) any later version.                                        --
--                                                                            --
-- This program is distributed in the hope that it will be useful,            --
-- but WITHOUT ANY WARRANTY; without even the implied warranty of             --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the               --
-- GNU Lesser General Public License for more details.                        --
--                                                                            --
-- You should have received a copy of the GNU Lesser General Public License   --
-- along with this program.If not, see http://www.gnu.org/licenses            --
--                                                                            --
--------------------------------------------------------------------------------
with NetFrameworkBase.System.Reflection.MemberInfo;
limited with NetFrameworkBase.System.Guid;
limited with NetFrameworkBase.System.Reflection.BindingFlags;
limited with NetFrameworkBase.System.Reflection.Binder;
with NetFrameworkBase.System.Object;
limited with NetFrameworkBase.System.Globalization.CultureInfo;
limited with NetFrameworkBase.System.Reflection.CallingConventions;
limited with NetFrameworkBase.System.Reflection.ParameterModifier;
limited with NetFrameworkBase.System.Reflection.TypeFilter;
limited with NetFrameworkBase.System.Reflection.MemberTypes;
limited with NetFrameworkBase.System.Reflection.MemberFilter;
limited with NetFrameworkBase.System.RuntimeTypeHandle;
limited with NetFrameworkBase.System.Reflection.MethodBase;
limited with NetFrameworkBase.System.Runtime.InteropServices.StructLayoutAttribute;
limited with NetFrameworkBase.System.TypeCode;
limited with NetFrameworkBase.System.Reflection.ConstructorInfo;
limited with NetFrameworkBase.System.Reflection.MethodInfo;
limited with NetFrameworkBase.System.Reflection.FieldInfo;
limited with NetFrameworkBase.System.Reflection.EventInfo;
limited with NetFrameworkBase.System.Reflection.PropertyInfo;
limited with NetFrameworkBase.System.Reflection.TypeAttributes;
limited with NetFrameworkBase.System.Reflection.GenericParameterAttributes;
limited with NetFrameworkBase.System.Array_x;
limited with NetFrameworkBase.System.Reflection.InterfaceMapping;
limited with NetFrameworkBase.System.Reflection.Module;
limited with NetFrameworkBase.System.Reflection.Assembly;
--------------------------------------------------------------------------------
package NetFrameworkBase.System.Type_x is
   
   type Kind is new NetFrameworkBase.System.Reflection.MemberInfo.Kind with null record;
   type Kind_Ptr is access all Kind;
   type Kind_Array is array(Natural range<>) of Kind_Ptr;
   type Kind_Array_Ptr is access all Kind_Array;
   
      function MemberType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Reflection.MemberTypes.Kind;
      
      function DeclaringType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function DeclaringMethod
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Reflection.MethodBase.Kind_Ptr;
      
      function ReflectedType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetType
      (
         typeName : NetFrameworkBase.BSTR; 
         throwOnError : NetFrameworkBase.Boolean; 
         ignoreCase : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetType
      (
         typeName : NetFrameworkBase.BSTR; 
         throwOnError : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetType
      (
         typeName : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function ReflectionOnlyGetType
      (
         typeName : NetFrameworkBase.BSTR; 
         throwIfNotFound : NetFrameworkBase.Boolean; 
         ignoreCase : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function MakePointerType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function StructLayoutAttribute
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Runtime.InteropServices.StructLayoutAttribute.Kind_Ptr;
      
      function MakeByRefType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function MakeArrayType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function MakeArrayType
      (
         this : in out Type_x.Kind;
         rank : NetFrameworkBase.Int32
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetTypeFromProgID
      (
         progID : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetTypeFromProgID
      (
         progID : NetFrameworkBase.BSTR; 
         throwOnError : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetTypeFromProgID
      (
         progID : NetFrameworkBase.BSTR; 
         server : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetTypeFromProgID
      (
         progID : NetFrameworkBase.BSTR; 
         server : NetFrameworkBase.BSTR; 
         throwOnError : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetTypeFromCLSID
      (
         clsid : NetFrameworkBase.System.Guid.Kind_Ptr
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetTypeFromCLSID
      (
         clsid : NetFrameworkBase.System.Guid.Kind_Ptr; 
         throwOnError : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetTypeFromCLSID
      (
         clsid : NetFrameworkBase.System.Guid.Kind_Ptr; 
         server : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetTypeFromCLSID
      (
         clsid : NetFrameworkBase.System.Guid.Kind_Ptr; 
         server : NetFrameworkBase.BSTR; 
         throwOnError : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetTypeCode
      (
         type_x : NetFrameworkBase.System.Type_x.Kind_Ptr
      )
      return NetFrameworkBase.System.TypeCode.Kind;
      
      function DefaultBinder
      return NetFrameworkBase.System.Reflection.Binder.Kind_Ptr;
      
      function InvokeMember
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         invokeAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind; 
         binder : NetFrameworkBase.System.Reflection.Binder.Kind_Ptr; 
         target : NetFrameworkBase.System.Object.Kind_Ptr; 
         args : NetFrameworkBase.System.Object.Kind_Array; 
         culture : NetFrameworkBase.System.Globalization.CultureInfo.Kind_Ptr
      )
      return NetFrameworkBase.System.Object.Kind_Ptr;
      
      function InvokeMember
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         invokeAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind; 
         binder : NetFrameworkBase.System.Reflection.Binder.Kind_Ptr; 
         target : NetFrameworkBase.System.Object.Kind_Ptr; 
         args : NetFrameworkBase.System.Object.Kind_Array
      )
      return NetFrameworkBase.System.Object.Kind_Ptr;
      
      function TypeHandle
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.RuntimeTypeHandle.Kind_Ptr;
      
      function GetTypeHandle
      (
         o : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.System.RuntimeTypeHandle.Kind_Ptr;
      
      function GetArrayRank
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Int32;
      
      function GetConstructor
      (
         this : in out Type_x.Kind;
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind; 
         binder : NetFrameworkBase.System.Reflection.Binder.Kind_Ptr; 
         callConvention : NetFrameworkBase.System.Reflection.CallingConventions.Kind; 
         types : NetFrameworkBase.System.Type_x.Kind_Array; 
         modifiers : NetFrameworkBase.System.Reflection.ParameterModifier.Kind_Array_Ptr
      )
      return NetFrameworkBase.System.Reflection.ConstructorInfo.Kind_Ptr;
      
      function GetConstructor
      (
         this : in out Type_x.Kind;
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind; 
         binder : NetFrameworkBase.System.Reflection.Binder.Kind_Ptr; 
         types : NetFrameworkBase.System.Type_x.Kind_Array; 
         modifiers : NetFrameworkBase.System.Reflection.ParameterModifier.Kind_Array_Ptr
      )
      return NetFrameworkBase.System.Reflection.ConstructorInfo.Kind_Ptr;
      
      function GetConstructor
      (
         this : in out Type_x.Kind;
         types : NetFrameworkBase.System.Type_x.Kind_Array
      )
      return NetFrameworkBase.System.Reflection.ConstructorInfo.Kind_Ptr;
      
      function GetConstructors
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Reflection.ConstructorInfo.Kind_Array;
      
      function TypeInitializer
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Reflection.ConstructorInfo.Kind_Ptr;
      
      function GetMethod
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind; 
         binder : NetFrameworkBase.System.Reflection.Binder.Kind_Ptr; 
         callConvention : NetFrameworkBase.System.Reflection.CallingConventions.Kind; 
         types : NetFrameworkBase.System.Type_x.Kind_Array; 
         modifiers : NetFrameworkBase.System.Reflection.ParameterModifier.Kind_Array_Ptr
      )
      return NetFrameworkBase.System.Reflection.MethodInfo.Kind_Ptr;
      
      function GetMethod
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind; 
         binder : NetFrameworkBase.System.Reflection.Binder.Kind_Ptr; 
         types : NetFrameworkBase.System.Type_x.Kind_Array; 
         modifiers : NetFrameworkBase.System.Reflection.ParameterModifier.Kind_Array_Ptr
      )
      return NetFrameworkBase.System.Reflection.MethodInfo.Kind_Ptr;
      
      function GetMethod
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         types : NetFrameworkBase.System.Type_x.Kind_Array; 
         modifiers : NetFrameworkBase.System.Reflection.ParameterModifier.Kind_Array_Ptr
      )
      return NetFrameworkBase.System.Reflection.MethodInfo.Kind_Ptr;
      
      function GetMethod
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         types : NetFrameworkBase.System.Type_x.Kind_Array
      )
      return NetFrameworkBase.System.Reflection.MethodInfo.Kind_Ptr;
      
      function GetMethod
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.MethodInfo.Kind_Ptr;
      
      function GetMethod
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.System.Reflection.MethodInfo.Kind_Ptr;
      
      function GetMethods
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Reflection.MethodInfo.Kind_Array;
      
      function GetField
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.System.Reflection.FieldInfo.Kind_Ptr;
      
      function GetFields
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Reflection.FieldInfo.Kind_Array;
      
      function GetInterface
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function FindInterfaces
      (
         this : in out Type_x.Kind;
         filter : NetFrameworkBase.System.Reflection.TypeFilter.Kind_Ptr; 
         filterCriteria : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.System.Type_x.Kind_Array;
      
      function GetEvent
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.System.Reflection.EventInfo.Kind_Ptr;
      
      function GetEvents
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Reflection.EventInfo.Kind_Array;
      
      function GetProperty
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind; 
         binder : NetFrameworkBase.System.Reflection.Binder.Kind_Ptr; 
         returnType : NetFrameworkBase.System.Type_x.Kind_Ptr; 
         types : NetFrameworkBase.System.Type_x.Kind_Array; 
         modifiers : NetFrameworkBase.System.Reflection.ParameterModifier.Kind_Array_Ptr
      )
      return NetFrameworkBase.System.Reflection.PropertyInfo.Kind_Ptr;
      
      function GetProperty
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         returnType : NetFrameworkBase.System.Type_x.Kind_Ptr; 
         types : NetFrameworkBase.System.Type_x.Kind_Array; 
         modifiers : NetFrameworkBase.System.Reflection.ParameterModifier.Kind_Array_Ptr
      )
      return NetFrameworkBase.System.Reflection.PropertyInfo.Kind_Ptr;
      
      function GetProperty
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.PropertyInfo.Kind_Ptr;
      
      function GetProperty
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         returnType : NetFrameworkBase.System.Type_x.Kind_Ptr; 
         types : NetFrameworkBase.System.Type_x.Kind_Array
      )
      return NetFrameworkBase.System.Reflection.PropertyInfo.Kind_Ptr;
      
      function GetProperty
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         types : NetFrameworkBase.System.Type_x.Kind_Array
      )
      return NetFrameworkBase.System.Reflection.PropertyInfo.Kind_Ptr;
      
      function GetProperty
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         returnType : NetFrameworkBase.System.Type_x.Kind_Ptr
      )
      return NetFrameworkBase.System.Reflection.PropertyInfo.Kind_Ptr;
      
      function GetProperty
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.System.Reflection.PropertyInfo.Kind_Ptr;
      
      function GetProperties
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Reflection.PropertyInfo.Kind_Array;
      
      function GetNestedTypes
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Array;
      
      function GetNestedType
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetMember
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR
      )
      return NetFrameworkBase.System.Reflection.MemberInfo.Kind_Array;
      
      function GetMember
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.MemberInfo.Kind_Array;
      
      function GetMember
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         type_x : NetFrameworkBase.System.Reflection.MemberTypes.Kind; 
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.MemberInfo.Kind_Array;
      
      function GetMembers
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Reflection.MemberInfo.Kind_Array;
      
      function GetDefaultMembers
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Reflection.MemberInfo.Kind_Array;
      
      function FindMembers
      (
         this : in out Type_x.Kind;
         memberType : NetFrameworkBase.System.Reflection.MemberTypes.Kind; 
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind; 
         filter : NetFrameworkBase.System.Reflection.MemberFilter.Kind_Ptr; 
         filterCriteria : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.System.Reflection.MemberInfo.Kind_Array;
      
      function IsNested
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function Attributes
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Reflection.TypeAttributes.Kind;
      
      function GenericParameterAttributes
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Reflection.GenericParameterAttributes.Kind;
      
      function IsVisible
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsNotPublic
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsPublic
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsNestedPublic
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsNestedPrivate
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsNestedFamily
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsNestedAssembly
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsNestedFamANDAssem
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsNestedFamORAssem
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsAutoLayout
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsLayoutSequential
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsExplicitLayout
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsClass
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsInterface
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsValueType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsAbstract
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsSealed
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsEnum
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsSpecialName
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsImport
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsSerializable
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsAnsiClass
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsUnicodeClass
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsAutoClass
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsArray
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsGenericType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsGenericTypeDefinition
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsConstructedGenericType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsGenericParameter
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function GenericParameterPosition
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Int32;
      
      function ContainsGenericParameters
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function GetGenericParameterConstraints
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Array;
      
      function IsByRef
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsPointer
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsPrimitive
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsCOMObject
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function HasElementType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsContextful
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsMarshalByRef
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function MakeGenericType
      (
         this : in out Type_x.Kind;
         typeArguments : NetFrameworkBase.System.Type_x.Kind_Array
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetGenericArguments
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Array;
      
      function GenericTypeArguments
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Array;
      
      function GetGenericTypeDefinition
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetEnumNames
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.BSTR_Array;
      
      function GetEnumValues
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Array_x.Kind_Ptr;
      
      function GetEnumUnderlyingType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function IsEnumDefined
      (
         this : in out Type_x.Kind;
         value : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      
      function GetEnumName
      (
         this : in out Type_x.Kind;
         value : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.BSTR;
      
      function IsSecurityCritical
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsSecuritySafeCritical
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsSecurityTransparent
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Boolean;
      
      function IsSubclassOf
      (
         this : in out Type_x.Kind;
         c : NetFrameworkBase.System.Type_x.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      
      function IsInstanceOfType
      (
         this : in out Type_x.Kind;
         o : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      
      function IsAssignableFrom
      (
         this : in out Type_x.Kind;
         c : NetFrameworkBase.System.Type_x.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      
      function IsEquivalentTo
      (
         this : in out Type_x.Kind;
         other : NetFrameworkBase.System.Type_x.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      
      function GetTypeArray
      (
         args : NetFrameworkBase.System.Object.Kind_Array
      )
      return NetFrameworkBase.System.Type_x.Kind_Array;
      
      function Equals
      (
         this : in out Type_x.Kind;
         o : NetFrameworkBase.System.Object.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      
      function Equals
      (
         this : in out Type_x.Kind;
         o : NetFrameworkBase.System.Type_x.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      
      function GetHashCode
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.Int32;
      
      function GetInterfaceMap
      (
         this : in out Type_x.Kind;
         interfaceType : NetFrameworkBase.System.Type_x.Kind_Ptr
      )
      return NetFrameworkBase.System.Reflection.InterfaceMapping.Kind_Ptr;
      
      function GetType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GUID
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Guid.Kind_Ptr;
      
      function InvokeMember
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         invokeAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind; 
         binder : NetFrameworkBase.System.Reflection.Binder.Kind_Ptr; 
         target : NetFrameworkBase.System.Object.Kind_Ptr; 
         args : NetFrameworkBase.System.Object.Kind_Array; 
         modifiers : NetFrameworkBase.System.Reflection.ParameterModifier.Kind_Array_Ptr; 
         culture : NetFrameworkBase.System.Globalization.CultureInfo.Kind_Ptr; 
         namedParameters : NetFrameworkBase.BSTR_Array
      )
      return NetFrameworkBase.System.Object.Kind_Ptr;
      
      function Module
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Reflection.Module.Kind_Ptr;
      
      function Assembly
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Reflection.Assembly.Kind_Ptr;
      
      function FullName
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function Namespace
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function AssemblyQualifiedName
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function BaseType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetConstructors
      (
         this : in out Type_x.Kind;
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.ConstructorInfo.Kind_Array;
      
      function GetMethods
      (
         this : in out Type_x.Kind;
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.MethodInfo.Kind_Array;
      
      function GetField
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.FieldInfo.Kind_Ptr;
      
      function GetFields
      (
         this : in out Type_x.Kind;
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.FieldInfo.Kind_Array;
      
      function GetInterface
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         ignoreCase : NetFrameworkBase.Boolean
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetInterfaces
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Array;
      
      function GetEvent
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.EventInfo.Kind_Ptr;
      
      function GetEvents
      (
         this : in out Type_x.Kind;
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.EventInfo.Kind_Array;
      
      function GetProperties
      (
         this : in out Type_x.Kind;
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.PropertyInfo.Kind_Array;
      
      function GetNestedTypes
      (
         this : in out Type_x.Kind;
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Array;
      
      function GetNestedType
      (
         this : in out Type_x.Kind;
         name : NetFrameworkBase.BSTR; 
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function GetMembers
      (
         this : in out Type_x.Kind;
         bindingAttr : NetFrameworkBase.System.Reflection.BindingFlags.Kind
      )
      return NetFrameworkBase.System.Reflection.MemberInfo.Kind_Array;
      
      function GetElementType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function UnderlyingSystemType
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function ToString
      (
         this : in out Type_x.Kind
      )
      return NetFrameworkBase.BSTR;
      
      function GetTypeFromHandle
      (
         handle : NetFrameworkBase.System.RuntimeTypeHandle.Kind_Ptr
      )
      return NetFrameworkBase.System.Type_x.Kind_Ptr;
      
      function op_Equality
      (
         left : NetFrameworkBase.System.Type_x.Kind_Ptr; 
         right : NetFrameworkBase.System.Type_x.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      function "="(left : NetFrameworkBase.System.Type_x.Kind_Ptr; right : NetFrameworkBase.System.Type_x.Kind_Ptr) return NetFrameworkBase.Boolean renames op_Equality;
      
      function op_Inequality
      (
         left : NetFrameworkBase.System.Type_x.Kind_Ptr; 
         right : NetFrameworkBase.System.Type_x.Kind_Ptr
      )
      return NetFrameworkBase.Boolean;
      
end;
