Merge pull request dotnet/corert#5933 from dotnet/nmirror
authorMichal Strehovský <MichalStrehovsky@users.noreply.github.com>
Tue, 12 Jun 2018 14:01:50 +0000 (16:01 +0200)
committerMichal Strehovský <MichalStrehovsky@users.noreply.github.com>
Wed, 13 Jun 2018 08:55:40 +0000 (10:55 +0200)
Merge nmirror to master

Signed-off-by: dotnet-bot <dotnet-bot@microsoft.com>
src/System.Private.CoreLib/shared/System.Private.CoreLib.Shared.projitems
src/System.Private.CoreLib/shared/System/Reflection/Emit/AssemblyBuilderAccess.cs [new file with mode: 0644]
src/System.Private.CoreLib/shared/System/Reflection/Emit/FlowControl.cs [new file with mode: 0644]
src/System.Private.CoreLib/shared/System/Reflection/Emit/Label.cs [new file with mode: 0644]
src/System.Private.CoreLib/shared/System/Reflection/Emit/OpCodeType.cs [new file with mode: 0644]
src/System.Private.CoreLib/shared/System/Reflection/Emit/OpCodes.cs [new file with mode: 0644]
src/System.Private.CoreLib/shared/System/Reflection/Emit/Opcode.cs [new file with mode: 0644]
src/System.Private.CoreLib/shared/System/Reflection/Emit/OperandType.cs [new file with mode: 0644]
src/System.Private.CoreLib/shared/System/Reflection/Emit/PEFileKinds.cs [new file with mode: 0644]
src/System.Private.CoreLib/shared/System/Reflection/Emit/PackingSize.cs [new file with mode: 0644]
src/System.Private.CoreLib/shared/System/Reflection/Emit/StackBehaviour.cs [new file with mode: 0644]

index 07a184ff3c61847bf611352ec2d12c0190c72404..fcf4e53102e31fa79971d9c68e11a5c49526c8cd 100644 (file)
     <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\ConstructorInfo.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\CustomAttributeFormatException.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\DefaultMemberAttribute.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\Emit\AssemblyBuilderAccess.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\Emit\FlowControl.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\Emit\Label.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\Emit\Opcode.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\Emit\OpCodes.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\Emit\OpCodeType.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\Emit\OperandType.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\Emit\PackingSize.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\Emit\PEFileKinds.cs" />
+    <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\Emit\StackBehaviour.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\EventAttributes.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\EventInfo.cs" />
     <Compile Include="$(MSBuildThisFileDirectory)System\Reflection\ExceptionHandlingClauseOptions.cs" />
diff --git a/src/System.Private.CoreLib/shared/System/Reflection/Emit/AssemblyBuilderAccess.cs b/src/System.Private.CoreLib/shared/System/Reflection/Emit/AssemblyBuilderAccess.cs
new file mode 100644 (file)
index 0000000..b096960
--- /dev/null
@@ -0,0 +1,18 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System;
+
+// This enumeration defines the access modes for a dynamic assembly.
+// EE uses these enum values..look for m_dwDynamicAssemblyAccess in Assembly.hpp
+
+namespace System.Reflection.Emit
+{
+    [Flags]
+    public enum AssemblyBuilderAccess
+    {
+        Run = 1,
+        RunAndCollect = 8 | Run
+    }
+}
diff --git a/src/System.Private.CoreLib/shared/System/Reflection/Emit/FlowControl.cs b/src/System.Private.CoreLib/shared/System/Reflection/Emit/FlowControl.cs
new file mode 100644 (file)
index 0000000..8905a7f
--- /dev/null
@@ -0,0 +1,32 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*============================================================
+**
+** Enumeration: FlowControl
+**
+** Purpose: Exposes FlowControl Attribute of IL.
+**
+** THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT BY HAND!
+** See $(RepoRoot)\src\inc\OpCodeGen.pl for more information.**
+==============================================================*/
+
+using System;
+
+namespace System.Reflection.Emit
+{
+    public enum FlowControl
+    {
+        Branch = 0,
+        Break = 1,
+        Call = 2,
+        Cond_Branch = 3,
+        Meta = 4,
+        Next = 5,
+        [Obsolete("This API has been deprecated. http://go.microsoft.com/fwlink/?linkid=14202")]
+        Phi = 6,
+        Return = 7,
+        Throw = 8,
+    }
+}
diff --git a/src/System.Private.CoreLib/shared/System/Reflection/Emit/Label.cs b/src/System.Private.CoreLib/shared/System/Reflection/Emit/Label.cs
new file mode 100644 (file)
index 0000000..d67c0e6
--- /dev/null
@@ -0,0 +1,75 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*============================================================
+**
+** 
+** 
+**
+**  
+**
+** Purpose: Represents a Label to the ILGenerator class.
+**
+** 
+===========================================================*/
+
+using System;
+using System.Reflection;
+using System.Runtime.InteropServices;
+
+namespace System.Reflection.Emit
+{
+    // The Label class is an opaque representation of a label used by the 
+    // ILGenerator class.  The token is used to mark where labels occur in the IL
+    // stream and then the necessary offsets are put back in the code when the ILGenerator 
+    // is passed to the MethodWriter.
+    // Labels are created by using ILGenerator.CreateLabel and their position is set
+    // by using ILGenerator.MarkLabel.
+    public struct Label
+    {
+        internal int m_label;
+
+        //public Label() {
+        //    m_label=0;
+        //}
+
+        internal Label(int label)
+        {
+            m_label = label;
+        }
+
+        internal int GetLabelValue()
+        {
+            return m_label;
+        }
+
+        public override int GetHashCode()
+        {
+            return m_label;
+        }
+
+        public override bool Equals(Object obj)
+        {
+            if (obj is Label)
+                return Equals((Label)obj);
+            else
+                return false;
+        }
+
+        public bool Equals(Label obj)
+        {
+            return obj.m_label == m_label;
+        }
+
+        public static bool operator ==(Label a, Label b)
+        {
+            return a.Equals(b);
+        }
+
+        public static bool operator !=(Label a, Label b)
+        {
+            return !(a == b);
+        }
+    }
+}
diff --git a/src/System.Private.CoreLib/shared/System/Reflection/Emit/OpCodeType.cs b/src/System.Private.CoreLib/shared/System/Reflection/Emit/OpCodeType.cs
new file mode 100644 (file)
index 0000000..17435c5
--- /dev/null
@@ -0,0 +1,29 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*============================================================
+**
+** Enumeration: OpCodeType
+**
+** Purpose: Exposes OpCodeType Attribute of IL.
+**
+** THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT BY HAND!
+** See $(RepoRoot)\src\inc\OpCodeGen.pl for more information.**
+==============================================================*/
+
+using System;
+
+namespace System.Reflection.Emit
+{
+    public enum OpCodeType
+    {
+        [Obsolete("This API has been deprecated. http://go.microsoft.com/fwlink/?linkid=14202")]
+        Annotation = 0,
+        Macro = 1,
+        Nternal = 2,
+        Objmodel = 3,
+        Prefix = 4,
+        Primitive = 5,
+    }
+}
diff --git a/src/System.Private.CoreLib/shared/System/Reflection/Emit/OpCodes.cs b/src/System.Private.CoreLib/shared/System/Reflection/Emit/OpCodes.cs
new file mode 100644 (file)
index 0000000..2875c95
--- /dev/null
@@ -0,0 +1,2540 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+namespace System.Reflection.Emit
+{
+    //
+    // Internal enums for opcode values. Note that the value names are used to construct
+    // publicly visible ilasm-compatible opcode names, so their exact form is important!
+    //
+    internal enum OpCodeValues
+    {
+        Nop = 0x00,
+        Break = 0x01,
+        Ldarg_0 = 0x02,
+        Ldarg_1 = 0x03,
+        Ldarg_2 = 0x04,
+        Ldarg_3 = 0x05,
+        Ldloc_0 = 0x06,
+        Ldloc_1 = 0x07,
+        Ldloc_2 = 0x08,
+        Ldloc_3 = 0x09,
+        Stloc_0 = 0x0a,
+        Stloc_1 = 0x0b,
+        Stloc_2 = 0x0c,
+        Stloc_3 = 0x0d,
+        Ldarg_S = 0x0e,
+        Ldarga_S = 0x0f,
+        Starg_S = 0x10,
+        Ldloc_S = 0x11,
+        Ldloca_S = 0x12,
+        Stloc_S = 0x13,
+        Ldnull = 0x14,
+        Ldc_I4_M1 = 0x15,
+        Ldc_I4_0 = 0x16,
+        Ldc_I4_1 = 0x17,
+        Ldc_I4_2 = 0x18,
+        Ldc_I4_3 = 0x19,
+        Ldc_I4_4 = 0x1a,
+        Ldc_I4_5 = 0x1b,
+        Ldc_I4_6 = 0x1c,
+        Ldc_I4_7 = 0x1d,
+        Ldc_I4_8 = 0x1e,
+        Ldc_I4_S = 0x1f,
+        Ldc_I4 = 0x20,
+        Ldc_I8 = 0x21,
+        Ldc_R4 = 0x22,
+        Ldc_R8 = 0x23,
+        Dup = 0x25,
+        Pop = 0x26,
+        Jmp = 0x27,
+        Call = 0x28,
+        Calli = 0x29,
+        Ret = 0x2a,
+        Br_S = 0x2b,
+        Brfalse_S = 0x2c,
+        Brtrue_S = 0x2d,
+        Beq_S = 0x2e,
+        Bge_S = 0x2f,
+        Bgt_S = 0x30,
+        Ble_S = 0x31,
+        Blt_S = 0x32,
+        Bne_Un_S = 0x33,
+        Bge_Un_S = 0x34,
+        Bgt_Un_S = 0x35,
+        Ble_Un_S = 0x36,
+        Blt_Un_S = 0x37,
+        Br = 0x38,
+        Brfalse = 0x39,
+        Brtrue = 0x3a,
+        Beq = 0x3b,
+        Bge = 0x3c,
+        Bgt = 0x3d,
+        Ble = 0x3e,
+        Blt = 0x3f,
+        Bne_Un = 0x40,
+        Bge_Un = 0x41,
+        Bgt_Un = 0x42,
+        Ble_Un = 0x43,
+        Blt_Un = 0x44,
+        Switch = 0x45,
+        Ldind_I1 = 0x46,
+        Ldind_U1 = 0x47,
+        Ldind_I2 = 0x48,
+        Ldind_U2 = 0x49,
+        Ldind_I4 = 0x4a,
+        Ldind_U4 = 0x4b,
+        Ldind_I8 = 0x4c,
+        Ldind_I = 0x4d,
+        Ldind_R4 = 0x4e,
+        Ldind_R8 = 0x4f,
+        Ldind_Ref = 0x50,
+        Stind_Ref = 0x51,
+        Stind_I1 = 0x52,
+        Stind_I2 = 0x53,
+        Stind_I4 = 0x54,
+        Stind_I8 = 0x55,
+        Stind_R4 = 0x56,
+        Stind_R8 = 0x57,
+        Add = 0x58,
+        Sub = 0x59,
+        Mul = 0x5a,
+        Div = 0x5b,
+        Div_Un = 0x5c,
+        Rem = 0x5d,
+        Rem_Un = 0x5e,
+        And = 0x5f,
+        Or = 0x60,
+        Xor = 0x61,
+        Shl = 0x62,
+        Shr = 0x63,
+        Shr_Un = 0x64,
+        Neg = 0x65,
+        Not = 0x66,
+        Conv_I1 = 0x67,
+        Conv_I2 = 0x68,
+        Conv_I4 = 0x69,
+        Conv_I8 = 0x6a,
+        Conv_R4 = 0x6b,
+        Conv_R8 = 0x6c,
+        Conv_U4 = 0x6d,
+        Conv_U8 = 0x6e,
+        Callvirt = 0x6f,
+        Cpobj = 0x70,
+        Ldobj = 0x71,
+        Ldstr = 0x72,
+        Newobj = 0x73,
+        Castclass = 0x74,
+        Isinst = 0x75,
+        Conv_R_Un = 0x76,
+        Unbox = 0x79,
+        Throw = 0x7a,
+        Ldfld = 0x7b,
+        Ldflda = 0x7c,
+        Stfld = 0x7d,
+        Ldsfld = 0x7e,
+        Ldsflda = 0x7f,
+        Stsfld = 0x80,
+        Stobj = 0x81,
+        Conv_Ovf_I1_Un = 0x82,
+        Conv_Ovf_I2_Un = 0x83,
+        Conv_Ovf_I4_Un = 0x84,
+        Conv_Ovf_I8_Un = 0x85,
+        Conv_Ovf_U1_Un = 0x86,
+        Conv_Ovf_U2_Un = 0x87,
+        Conv_Ovf_U4_Un = 0x88,
+        Conv_Ovf_U8_Un = 0x89,
+        Conv_Ovf_I_Un = 0x8a,
+        Conv_Ovf_U_Un = 0x8b,
+        Box = 0x8c,
+        Newarr = 0x8d,
+        Ldlen = 0x8e,
+        Ldelema = 0x8f,
+        Ldelem_I1 = 0x90,
+        Ldelem_U1 = 0x91,
+        Ldelem_I2 = 0x92,
+        Ldelem_U2 = 0x93,
+        Ldelem_I4 = 0x94,
+        Ldelem_U4 = 0x95,
+        Ldelem_I8 = 0x96,
+        Ldelem_I = 0x97,
+        Ldelem_R4 = 0x98,
+        Ldelem_R8 = 0x99,
+        Ldelem_Ref = 0x9a,
+        Stelem_I = 0x9b,
+        Stelem_I1 = 0x9c,
+        Stelem_I2 = 0x9d,
+        Stelem_I4 = 0x9e,
+        Stelem_I8 = 0x9f,
+        Stelem_R4 = 0xa0,
+        Stelem_R8 = 0xa1,
+        Stelem_Ref = 0xa2,
+        Ldelem = 0xa3,
+        Stelem = 0xa4,
+        Unbox_Any = 0xa5,
+        Conv_Ovf_I1 = 0xb3,
+        Conv_Ovf_U1 = 0xb4,
+        Conv_Ovf_I2 = 0xb5,
+        Conv_Ovf_U2 = 0xb6,
+        Conv_Ovf_I4 = 0xb7,
+        Conv_Ovf_U4 = 0xb8,
+        Conv_Ovf_I8 = 0xb9,
+        Conv_Ovf_U8 = 0xba,
+        Refanyval = 0xc2,
+        Ckfinite = 0xc3,
+        Mkrefany = 0xc6,
+        Ldtoken = 0xd0,
+        Conv_U2 = 0xd1,
+        Conv_U1 = 0xd2,
+        Conv_I = 0xd3,
+        Conv_Ovf_I = 0xd4,
+        Conv_Ovf_U = 0xd5,
+        Add_Ovf = 0xd6,
+        Add_Ovf_Un = 0xd7,
+        Mul_Ovf = 0xd8,
+        Mul_Ovf_Un = 0xd9,
+        Sub_Ovf = 0xda,
+        Sub_Ovf_Un = 0xdb,
+        Endfinally = 0xdc,
+        Leave = 0xdd,
+        Leave_S = 0xde,
+        Stind_I = 0xdf,
+        Conv_U = 0xe0,
+        Prefix7 = 0xf8,
+        Prefix6 = 0xf9,
+        Prefix5 = 0xfa,
+        Prefix4 = 0xfb,
+        Prefix3 = 0xfc,
+        Prefix2 = 0xfd,
+        Prefix1 = 0xfe,
+        Prefixref = 0xff,
+        Arglist = 0xfe00,
+        Ceq = 0xfe01,
+        Cgt = 0xfe02,
+        Cgt_Un = 0xfe03,
+        Clt = 0xfe04,
+        Clt_Un = 0xfe05,
+        Ldftn = 0xfe06,
+        Ldvirtftn = 0xfe07,
+        Ldarg = 0xfe09,
+        Ldarga = 0xfe0a,
+        Starg = 0xfe0b,
+        Ldloc = 0xfe0c,
+        Ldloca = 0xfe0d,
+        Stloc = 0xfe0e,
+        Localloc = 0xfe0f,
+        Endfilter = 0xfe11,
+        Unaligned_ = 0xfe12,
+        Volatile_ = 0xfe13,
+        Tail_ = 0xfe14,
+        Initobj = 0xfe15,
+        Constrained_ = 0xfe16,
+        Cpblk = 0xfe17,
+        Initblk = 0xfe18,
+        Rethrow = 0xfe1a,
+        Sizeof = 0xfe1c,
+        Refanytype = 0xfe1d,
+        Readonly_ = 0xfe1e,
+        // If you add more opcodes here, modify OpCode.Name to handle them correctly
+    };
+
+    public class OpCodes
+    {
+        /// <summary>
+        ///    <para>
+        ///       The IL instruction opcodes supported by the
+        ///       runtime. The IL Instruction Specification describes each
+        ///       Opcode.
+        ///    </para>
+        /// </summary>
+        /// <seealso topic='IL Instruction Set       Specification'/>
+
+        private OpCodes()
+        {
+        }
+
+        public static readonly OpCode Nop = new OpCode(OpCodeValues.Nop,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Break = new OpCode(OpCodeValues.Break,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Break << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldarg_0 = new OpCode(OpCodeValues.Ldarg_0,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldarg_1 = new OpCode(OpCodeValues.Ldarg_1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldarg_2 = new OpCode(OpCodeValues.Ldarg_2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldarg_3 = new OpCode(OpCodeValues.Ldarg_3,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldloc_0 = new OpCode(OpCodeValues.Ldloc_0,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldloc_1 = new OpCode(OpCodeValues.Ldloc_1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldloc_2 = new OpCode(OpCodeValues.Ldloc_2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldloc_3 = new OpCode(OpCodeValues.Ldloc_3,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stloc_0 = new OpCode(OpCodeValues.Stloc_0,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stloc_1 = new OpCode(OpCodeValues.Stloc_1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stloc_2 = new OpCode(OpCodeValues.Stloc_2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stloc_3 = new OpCode(OpCodeValues.Stloc_3,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldarg_S = new OpCode(OpCodeValues.Ldarg_S,
+            ((int)OperandType.ShortInlineVar) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldarga_S = new OpCode(OpCodeValues.Ldarga_S,
+            ((int)OperandType.ShortInlineVar) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Starg_S = new OpCode(OpCodeValues.Starg_S,
+            ((int)OperandType.ShortInlineVar) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldloc_S = new OpCode(OpCodeValues.Ldloc_S,
+            ((int)OperandType.ShortInlineVar) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldloca_S = new OpCode(OpCodeValues.Ldloca_S,
+            ((int)OperandType.ShortInlineVar) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stloc_S = new OpCode(OpCodeValues.Stloc_S,
+            ((int)OperandType.ShortInlineVar) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldnull = new OpCode(OpCodeValues.Ldnull,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushref << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_I4_M1 = new OpCode(OpCodeValues.Ldc_I4_M1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_I4_0 = new OpCode(OpCodeValues.Ldc_I4_0,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_I4_1 = new OpCode(OpCodeValues.Ldc_I4_1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_I4_2 = new OpCode(OpCodeValues.Ldc_I4_2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_I4_3 = new OpCode(OpCodeValues.Ldc_I4_3,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_I4_4 = new OpCode(OpCodeValues.Ldc_I4_4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_I4_5 = new OpCode(OpCodeValues.Ldc_I4_5,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_I4_6 = new OpCode(OpCodeValues.Ldc_I4_6,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_I4_7 = new OpCode(OpCodeValues.Ldc_I4_7,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_I4_8 = new OpCode(OpCodeValues.Ldc_I4_8,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_I4_S = new OpCode(OpCodeValues.Ldc_I4_S,
+            ((int)OperandType.ShortInlineI) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_I4 = new OpCode(OpCodeValues.Ldc_I4,
+            ((int)OperandType.InlineI) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_I8 = new OpCode(OpCodeValues.Ldc_I8,
+            ((int)OperandType.InlineI8) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_R4 = new OpCode(OpCodeValues.Ldc_R4,
+            ((int)OperandType.ShortInlineR) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushr4 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldc_R8 = new OpCode(OpCodeValues.Ldc_R8,
+            ((int)OperandType.InlineR) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushr8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Dup = new OpCode(OpCodeValues.Dup,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1_push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Pop = new OpCode(OpCodeValues.Pop,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Jmp = new OpCode(OpCodeValues.Jmp,
+            ((int)OperandType.InlineMethod) |
+            ((int)FlowControl.Call << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            OpCode.EndsUncondJmpBlkFlag |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Call = new OpCode(OpCodeValues.Call,
+            ((int)OperandType.InlineMethod) |
+            ((int)FlowControl.Call << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Varpop << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Varpush << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Calli = new OpCode(OpCodeValues.Calli,
+            ((int)OperandType.InlineSig) |
+            ((int)FlowControl.Call << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Varpop << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Varpush << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ret = new OpCode(OpCodeValues.Ret,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Return << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Varpop << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            OpCode.EndsUncondJmpBlkFlag |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Br_S = new OpCode(OpCodeValues.Br_S,
+            ((int)OperandType.ShortInlineBrTarget) |
+            ((int)FlowControl.Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            OpCode.EndsUncondJmpBlkFlag |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Brfalse_S = new OpCode(OpCodeValues.Brfalse_S,
+            ((int)OperandType.ShortInlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Brtrue_S = new OpCode(OpCodeValues.Brtrue_S,
+            ((int)OperandType.ShortInlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Beq_S = new OpCode(OpCodeValues.Beq_S,
+            ((int)OperandType.ShortInlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Bge_S = new OpCode(OpCodeValues.Bge_S,
+            ((int)OperandType.ShortInlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Bgt_S = new OpCode(OpCodeValues.Bgt_S,
+            ((int)OperandType.ShortInlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ble_S = new OpCode(OpCodeValues.Ble_S,
+            ((int)OperandType.ShortInlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Blt_S = new OpCode(OpCodeValues.Blt_S,
+            ((int)OperandType.ShortInlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Bne_Un_S = new OpCode(OpCodeValues.Bne_Un_S,
+            ((int)OperandType.ShortInlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Bge_Un_S = new OpCode(OpCodeValues.Bge_Un_S,
+            ((int)OperandType.ShortInlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Bgt_Un_S = new OpCode(OpCodeValues.Bgt_Un_S,
+            ((int)OperandType.ShortInlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ble_Un_S = new OpCode(OpCodeValues.Ble_Un_S,
+            ((int)OperandType.ShortInlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Blt_Un_S = new OpCode(OpCodeValues.Blt_Un_S,
+            ((int)OperandType.ShortInlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Br = new OpCode(OpCodeValues.Br,
+            ((int)OperandType.InlineBrTarget) |
+            ((int)FlowControl.Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            OpCode.EndsUncondJmpBlkFlag |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Brfalse = new OpCode(OpCodeValues.Brfalse,
+            ((int)OperandType.InlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Brtrue = new OpCode(OpCodeValues.Brtrue,
+            ((int)OperandType.InlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Beq = new OpCode(OpCodeValues.Beq,
+            ((int)OperandType.InlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Bge = new OpCode(OpCodeValues.Bge,
+            ((int)OperandType.InlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Bgt = new OpCode(OpCodeValues.Bgt,
+            ((int)OperandType.InlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ble = new OpCode(OpCodeValues.Ble,
+            ((int)OperandType.InlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Blt = new OpCode(OpCodeValues.Blt,
+            ((int)OperandType.InlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Bne_Un = new OpCode(OpCodeValues.Bne_Un,
+            ((int)OperandType.InlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Bge_Un = new OpCode(OpCodeValues.Bge_Un,
+            ((int)OperandType.InlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Bgt_Un = new OpCode(OpCodeValues.Bgt_Un,
+            ((int)OperandType.InlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ble_Un = new OpCode(OpCodeValues.Ble_Un,
+            ((int)OperandType.InlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Blt_Un = new OpCode(OpCodeValues.Blt_Un,
+            ((int)OperandType.InlineBrTarget) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Macro << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Switch = new OpCode(OpCodeValues.Switch,
+            ((int)OperandType.InlineSwitch) |
+            ((int)FlowControl.Cond_Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldind_I1 = new OpCode(OpCodeValues.Ldind_I1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldind_U1 = new OpCode(OpCodeValues.Ldind_U1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldind_I2 = new OpCode(OpCodeValues.Ldind_I2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldind_U2 = new OpCode(OpCodeValues.Ldind_U2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldind_I4 = new OpCode(OpCodeValues.Ldind_I4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldind_U4 = new OpCode(OpCodeValues.Ldind_U4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldind_I8 = new OpCode(OpCodeValues.Ldind_I8,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldind_I = new OpCode(OpCodeValues.Ldind_I,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldind_R4 = new OpCode(OpCodeValues.Ldind_R4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushr4 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldind_R8 = new OpCode(OpCodeValues.Ldind_R8,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushr8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldind_Ref = new OpCode(OpCodeValues.Ldind_Ref,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushref << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stind_Ref = new OpCode(OpCodeValues.Stind_Ref,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stind_I1 = new OpCode(OpCodeValues.Stind_I1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stind_I2 = new OpCode(OpCodeValues.Stind_I2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stind_I4 = new OpCode(OpCodeValues.Stind_I4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stind_I8 = new OpCode(OpCodeValues.Stind_I8,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi_popi8 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stind_R4 = new OpCode(OpCodeValues.Stind_R4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi_popr4 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stind_R8 = new OpCode(OpCodeValues.Stind_R8,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi_popr8 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Add = new OpCode(OpCodeValues.Add,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Sub = new OpCode(OpCodeValues.Sub,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Mul = new OpCode(OpCodeValues.Mul,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Div = new OpCode(OpCodeValues.Div,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Div_Un = new OpCode(OpCodeValues.Div_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Rem = new OpCode(OpCodeValues.Rem,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Rem_Un = new OpCode(OpCodeValues.Rem_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode And = new OpCode(OpCodeValues.And,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Or = new OpCode(OpCodeValues.Or,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Xor = new OpCode(OpCodeValues.Xor,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Shl = new OpCode(OpCodeValues.Shl,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Shr = new OpCode(OpCodeValues.Shr,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Shr_Un = new OpCode(OpCodeValues.Shr_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Neg = new OpCode(OpCodeValues.Neg,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Not = new OpCode(OpCodeValues.Not,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_I1 = new OpCode(OpCodeValues.Conv_I1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_I2 = new OpCode(OpCodeValues.Conv_I2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_I4 = new OpCode(OpCodeValues.Conv_I4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_I8 = new OpCode(OpCodeValues.Conv_I8,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_R4 = new OpCode(OpCodeValues.Conv_R4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushr4 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_R8 = new OpCode(OpCodeValues.Conv_R8,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushr8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_U4 = new OpCode(OpCodeValues.Conv_U4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_U8 = new OpCode(OpCodeValues.Conv_U8,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Callvirt = new OpCode(OpCodeValues.Callvirt,
+            ((int)OperandType.InlineMethod) |
+            ((int)FlowControl.Call << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Varpop << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Varpush << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Cpobj = new OpCode(OpCodeValues.Cpobj,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldobj = new OpCode(OpCodeValues.Ldobj,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldstr = new OpCode(OpCodeValues.Ldstr,
+            ((int)OperandType.InlineString) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushref << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Newobj = new OpCode(OpCodeValues.Newobj,
+            ((int)OperandType.InlineMethod) |
+            ((int)FlowControl.Call << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Varpop << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushref << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Castclass = new OpCode(OpCodeValues.Castclass,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushref << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Isinst = new OpCode(OpCodeValues.Isinst,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_R_Un = new OpCode(OpCodeValues.Conv_R_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushr8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Unbox = new OpCode(OpCodeValues.Unbox,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Throw = new OpCode(OpCodeValues.Throw,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Throw << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            OpCode.EndsUncondJmpBlkFlag |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldfld = new OpCode(OpCodeValues.Ldfld,
+            ((int)OperandType.InlineField) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldflda = new OpCode(OpCodeValues.Ldflda,
+            ((int)OperandType.InlineField) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stfld = new OpCode(OpCodeValues.Stfld,
+            ((int)OperandType.InlineField) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldsfld = new OpCode(OpCodeValues.Ldsfld,
+            ((int)OperandType.InlineField) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldsflda = new OpCode(OpCodeValues.Ldsflda,
+            ((int)OperandType.InlineField) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stsfld = new OpCode(OpCodeValues.Stsfld,
+            ((int)OperandType.InlineField) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stobj = new OpCode(OpCodeValues.Stobj,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_I1_Un = new OpCode(OpCodeValues.Conv_Ovf_I1_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_I2_Un = new OpCode(OpCodeValues.Conv_Ovf_I2_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_I4_Un = new OpCode(OpCodeValues.Conv_Ovf_I4_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_I8_Un = new OpCode(OpCodeValues.Conv_Ovf_I8_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_U1_Un = new OpCode(OpCodeValues.Conv_Ovf_U1_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_U2_Un = new OpCode(OpCodeValues.Conv_Ovf_U2_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_U4_Un = new OpCode(OpCodeValues.Conv_Ovf_U4_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_U8_Un = new OpCode(OpCodeValues.Conv_Ovf_U8_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_I_Un = new OpCode(OpCodeValues.Conv_Ovf_I_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_U_Un = new OpCode(OpCodeValues.Conv_Ovf_U_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Box = new OpCode(OpCodeValues.Box,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushref << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Newarr = new OpCode(OpCodeValues.Newarr,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushref << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldlen = new OpCode(OpCodeValues.Ldlen,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldelema = new OpCode(OpCodeValues.Ldelema,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldelem_I1 = new OpCode(OpCodeValues.Ldelem_I1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldelem_U1 = new OpCode(OpCodeValues.Ldelem_U1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldelem_I2 = new OpCode(OpCodeValues.Ldelem_I2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldelem_U2 = new OpCode(OpCodeValues.Ldelem_U2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldelem_I4 = new OpCode(OpCodeValues.Ldelem_I4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldelem_U4 = new OpCode(OpCodeValues.Ldelem_U4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldelem_I8 = new OpCode(OpCodeValues.Ldelem_I8,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldelem_I = new OpCode(OpCodeValues.Ldelem_I,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldelem_R4 = new OpCode(OpCodeValues.Ldelem_R4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushr4 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldelem_R8 = new OpCode(OpCodeValues.Ldelem_R8,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushr8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldelem_Ref = new OpCode(OpCodeValues.Ldelem_Ref,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushref << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stelem_I = new OpCode(OpCodeValues.Stelem_I,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-3 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stelem_I1 = new OpCode(OpCodeValues.Stelem_I1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-3 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stelem_I2 = new OpCode(OpCodeValues.Stelem_I2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-3 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stelem_I4 = new OpCode(OpCodeValues.Stelem_I4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-3 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stelem_I8 = new OpCode(OpCodeValues.Stelem_I8,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi_popi8 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-3 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stelem_R4 = new OpCode(OpCodeValues.Stelem_R4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi_popr4 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-3 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stelem_R8 = new OpCode(OpCodeValues.Stelem_R8,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi_popr8 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-3 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stelem_Ref = new OpCode(OpCodeValues.Stelem_Ref,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi_popref << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-3 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldelem = new OpCode(OpCodeValues.Ldelem,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stelem = new OpCode(OpCodeValues.Stelem,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref_popi_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Unbox_Any = new OpCode(OpCodeValues.Unbox_Any,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_I1 = new OpCode(OpCodeValues.Conv_Ovf_I1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_U1 = new OpCode(OpCodeValues.Conv_Ovf_U1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_I2 = new OpCode(OpCodeValues.Conv_Ovf_I2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_U2 = new OpCode(OpCodeValues.Conv_Ovf_U2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_I4 = new OpCode(OpCodeValues.Conv_Ovf_I4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_U4 = new OpCode(OpCodeValues.Conv_Ovf_U4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_I8 = new OpCode(OpCodeValues.Conv_Ovf_I8,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_U8 = new OpCode(OpCodeValues.Conv_Ovf_U8,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Refanyval = new OpCode(OpCodeValues.Refanyval,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ckfinite = new OpCode(OpCodeValues.Ckfinite,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushr8 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Mkrefany = new OpCode(OpCodeValues.Mkrefany,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldtoken = new OpCode(OpCodeValues.Ldtoken,
+            ((int)OperandType.InlineTok) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_U2 = new OpCode(OpCodeValues.Conv_U2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_U1 = new OpCode(OpCodeValues.Conv_U1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_I = new OpCode(OpCodeValues.Conv_I,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_I = new OpCode(OpCodeValues.Conv_Ovf_I,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_Ovf_U = new OpCode(OpCodeValues.Conv_Ovf_U,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Add_Ovf = new OpCode(OpCodeValues.Add_Ovf,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Add_Ovf_Un = new OpCode(OpCodeValues.Add_Ovf_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Mul_Ovf = new OpCode(OpCodeValues.Mul_Ovf,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Mul_Ovf_Un = new OpCode(OpCodeValues.Mul_Ovf_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Sub_Ovf = new OpCode(OpCodeValues.Sub_Ovf,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Sub_Ovf_Un = new OpCode(OpCodeValues.Sub_Ovf_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Endfinally = new OpCode(OpCodeValues.Endfinally,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Return << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            OpCode.EndsUncondJmpBlkFlag |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Leave = new OpCode(OpCodeValues.Leave,
+            ((int)OperandType.InlineBrTarget) |
+            ((int)FlowControl.Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            OpCode.EndsUncondJmpBlkFlag |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Leave_S = new OpCode(OpCodeValues.Leave_S,
+            ((int)OperandType.ShortInlineBrTarget) |
+            ((int)FlowControl.Branch << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            OpCode.EndsUncondJmpBlkFlag |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stind_I = new OpCode(OpCodeValues.Stind_I,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (-2 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Conv_U = new OpCode(OpCodeValues.Conv_U,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Prefix7 = new OpCode(OpCodeValues.Prefix7,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Meta << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Nternal << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Prefix6 = new OpCode(OpCodeValues.Prefix6,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Meta << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Nternal << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Prefix5 = new OpCode(OpCodeValues.Prefix5,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Meta << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Nternal << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Prefix4 = new OpCode(OpCodeValues.Prefix4,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Meta << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Nternal << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Prefix3 = new OpCode(OpCodeValues.Prefix3,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Meta << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Nternal << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Prefix2 = new OpCode(OpCodeValues.Prefix2,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Meta << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Nternal << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Prefix1 = new OpCode(OpCodeValues.Prefix1,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Meta << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Nternal << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Prefixref = new OpCode(OpCodeValues.Prefixref,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Meta << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Nternal << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (1 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Arglist = new OpCode(OpCodeValues.Arglist,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ceq = new OpCode(OpCodeValues.Ceq,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Cgt = new OpCode(OpCodeValues.Cgt,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Cgt_Un = new OpCode(OpCodeValues.Cgt_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Clt = new OpCode(OpCodeValues.Clt,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Clt_Un = new OpCode(OpCodeValues.Clt_Un,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1_pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldftn = new OpCode(OpCodeValues.Ldftn,
+            ((int)OperandType.InlineMethod) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldvirtftn = new OpCode(OpCodeValues.Ldvirtftn,
+            ((int)OperandType.InlineMethod) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popref << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldarg = new OpCode(OpCodeValues.Ldarg,
+            ((int)OperandType.InlineVar) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldarga = new OpCode(OpCodeValues.Ldarga,
+            ((int)OperandType.InlineVar) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Starg = new OpCode(OpCodeValues.Starg,
+            ((int)OperandType.InlineVar) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldloc = new OpCode(OpCodeValues.Ldloc,
+            ((int)OperandType.InlineVar) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push1 << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Ldloca = new OpCode(OpCodeValues.Ldloca,
+            ((int)OperandType.InlineVar) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Stloc = new OpCode(OpCodeValues.Stloc,
+            ((int)OperandType.InlineVar) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Localloc = new OpCode(OpCodeValues.Localloc,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Endfilter = new OpCode(OpCodeValues.Endfilter,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Return << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            OpCode.EndsUncondJmpBlkFlag |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Unaligned = new OpCode(OpCodeValues.Unaligned_,
+            ((int)OperandType.ShortInlineI) |
+            ((int)FlowControl.Meta << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Prefix << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Volatile = new OpCode(OpCodeValues.Volatile_,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Meta << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Prefix << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Tailcall = new OpCode(OpCodeValues.Tail_,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Meta << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Prefix << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Initobj = new OpCode(OpCodeValues.Initobj,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (-1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Constrained = new OpCode(OpCodeValues.Constrained_,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Meta << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Prefix << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Cpblk = new OpCode(OpCodeValues.Cpblk,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi_popi_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (-3 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Initblk = new OpCode(OpCodeValues.Initblk,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Popi_popi_popi << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (-3 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Rethrow = new OpCode(OpCodeValues.Rethrow,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Throw << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Objmodel << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            OpCode.EndsUncondJmpBlkFlag |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Sizeof = new OpCode(OpCodeValues.Sizeof,
+            ((int)OperandType.InlineType) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (1 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Refanytype = new OpCode(OpCodeValues.Refanytype,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Next << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Primitive << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop1 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Pushi << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+        public static readonly OpCode Readonly = new OpCode(OpCodeValues.Readonly_,
+            ((int)OperandType.InlineNone) |
+            ((int)FlowControl.Meta << OpCode.FlowControlShift) |
+            ((int)OpCodeType.Prefix << OpCode.OpCodeTypeShift) |
+            ((int)StackBehaviour.Pop0 << OpCode.StackBehaviourPopShift) |
+            ((int)StackBehaviour.Push0 << OpCode.StackBehaviourPushShift) |
+            (2 << OpCode.SizeShift) |
+            (0 << OpCode.StackChangeShift)
+        );
+
+
+        public static bool TakesSingleByteArgument(OpCode inst)
+        {
+            switch (inst.OperandType)
+            {
+                case OperandType.ShortInlineBrTarget:
+                case OperandType.ShortInlineI:
+                case OperandType.ShortInlineVar:
+                    return true;
+            };
+            return false;
+        }
+    }
+}
diff --git a/src/System.Private.CoreLib/shared/System/Reflection/Emit/Opcode.cs b/src/System.Private.CoreLib/shared/System/Reflection/Emit/Opcode.cs
new file mode 100644 (file)
index 0000000..539836d
--- /dev/null
@@ -0,0 +1,192 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+using System.Threading;
+
+namespace System.Reflection.Emit
+{
+    public struct OpCode
+    {
+        //
+        // Use packed bitfield for flags to avoid code bloat
+        //
+
+        internal const int OperandTypeMask = 0x1F;              // 000000000000000000000000000XXXXX
+
+        internal const int FlowControlShift = 5;                // 00000000000000000000000XXXX00000
+        internal const int FlowControlMask = 0x0F;
+
+        internal const int OpCodeTypeShift = 9;                 // 00000000000000000000XXX000000000
+        internal const int OpCodeTypeMask = 0x07;
+
+        internal const int StackBehaviourPopShift = 12;         // 000000000000000XXXXX000000000000
+        internal const int StackBehaviourPushShift = 17;        // 0000000000XXXXX00000000000000000
+        internal const int StackBehaviourMask = 0x1F;
+
+        internal const int SizeShift = 22;                      // 00000000XX0000000000000000000000
+        internal const int SizeMask = 0x03;
+
+        internal const int EndsUncondJmpBlkFlag = 0x01000000;   // 0000000X000000000000000000000000
+
+        // unused                                               // 0000XXX0000000000000000000000000
+
+        internal const int StackChangeShift = 28;               // XXXX0000000000000000000000000000
+
+        private OpCodeValues m_value;
+        private int m_flags;
+
+        internal OpCode(OpCodeValues value, int flags)
+        {
+            m_value = value;
+            m_flags = flags;
+        }
+
+        internal bool EndsUncondJmpBlk()
+        {
+            return (m_flags & EndsUncondJmpBlkFlag) != 0;
+        }
+
+        internal int StackChange()
+        {
+            return (m_flags >> StackChangeShift);
+        }
+
+        public OperandType OperandType
+        {
+            get
+            {
+                return (OperandType)(m_flags & OperandTypeMask);
+            }
+        }
+
+        public FlowControl FlowControl
+        {
+            get
+            {
+                return (FlowControl)((m_flags >> FlowControlShift) & FlowControlMask);
+            }
+        }
+
+        public OpCodeType OpCodeType
+        {
+            get
+            {
+                return (OpCodeType)((m_flags >> OpCodeTypeShift) & OpCodeTypeMask);
+            }
+        }
+
+
+        public StackBehaviour StackBehaviourPop
+        {
+            get
+            {
+                return (StackBehaviour)((m_flags >> StackBehaviourPopShift) & StackBehaviourMask);
+            }
+        }
+
+        public StackBehaviour StackBehaviourPush
+        {
+            get
+            {
+                return (StackBehaviour)((m_flags >> StackBehaviourPushShift) & StackBehaviourMask);
+            }
+        }
+
+        public int Size
+        {
+            get
+            {
+                return (m_flags >> SizeShift) & SizeMask;
+            }
+        }
+
+        public short Value
+        {
+            get
+            {
+                return (short)m_value;
+            }
+        }
+
+        private static volatile string[] g_nameCache;
+
+        public String Name
+        {
+            get
+            {
+                if (Size == 0)
+                    return null;
+
+                // Create and cache the opcode names lazily. They should be rarely used (only for logging, etc.)
+                // Note that we do not any locks here because of we always get the same names. The last one wins.
+                string[] nameCache = g_nameCache;
+                if (nameCache == null)
+                {
+                    nameCache = new String[0x11f];
+                    g_nameCache = nameCache;
+                }
+
+                OpCodeValues opCodeValue = (OpCodeValues)(ushort)Value;
+
+                int idx = (int)opCodeValue;
+                if (idx > 0xFF)
+                {
+                    if (idx >= 0xfe00 && idx <= 0xfe1e)
+                    {
+                        // Transform two byte opcode value to lower range that's suitable
+                        // for array index
+                        idx = 0x100 + (idx - 0xfe00);
+                    }
+                    else
+                    {
+                        // Unknown opcode
+                        return null;
+                    }
+                }
+
+                String name = Volatile.Read(ref nameCache[idx]);
+                if (name != null)
+                    return name;
+
+                // Create ilasm style name from the enum value name.
+                name = Enum.GetName(typeof(OpCodeValues), opCodeValue).ToLowerInvariant().Replace("_", ".");
+                Volatile.Write(ref nameCache[idx], name);
+                return name;
+            }
+        }
+
+        public override bool Equals(Object obj)
+        {
+            if (obj is OpCode)
+                return Equals((OpCode)obj);
+            else
+                return false;
+        }
+
+        public bool Equals(OpCode obj)
+        {
+            return obj.Value == Value;
+        }
+
+        public static bool operator ==(OpCode a, OpCode b)
+        {
+            return a.Equals(b);
+        }
+
+        public static bool operator !=(OpCode a, OpCode b)
+        {
+            return !(a == b);
+        }
+
+        public override int GetHashCode()
+        {
+            return Value;
+        }
+
+        public override String ToString()
+        {
+            return Name;
+        }
+    }
+}
diff --git a/src/System.Private.CoreLib/shared/System/Reflection/Emit/OperandType.cs b/src/System.Private.CoreLib/shared/System/Reflection/Emit/OperandType.cs
new file mode 100644 (file)
index 0000000..6257c56
--- /dev/null
@@ -0,0 +1,41 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*============================================================
+**
+** Enumeration: OperandType
+**
+** Purpose: Exposes OperandType Attribute of IL.
+**
+** THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT BY HAND!
+** See $(RepoRoot)\src\inc\OpCodeGen.pl for more information.**
+==============================================================*/
+
+using System;
+
+namespace System.Reflection.Emit
+{
+    public enum OperandType
+    {
+        InlineBrTarget = 0,
+        InlineField = 1,
+        InlineI = 2,
+        InlineI8 = 3,
+        InlineMethod = 4,
+        InlineNone = 5,
+        [Obsolete("This API has been deprecated. http://go.microsoft.com/fwlink/?linkid=14202")]
+        InlinePhi = 6,
+        InlineR = 7,
+        InlineSig = 9,
+        InlineString = 10,
+        InlineSwitch = 11,
+        InlineTok = 12,
+        InlineType = 13,
+        InlineVar = 14,
+        ShortInlineBrTarget = 15,
+        ShortInlineI = 16,
+        ShortInlineR = 17,
+        ShortInlineVar = 18,
+    }
+}
diff --git a/src/System.Private.CoreLib/shared/System/Reflection/Emit/PEFileKinds.cs b/src/System.Private.CoreLib/shared/System/Reflection/Emit/PEFileKinds.cs
new file mode 100644 (file)
index 0000000..f6606c4
--- /dev/null
@@ -0,0 +1,17 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+
+using System;
+
+namespace System.Reflection.Emit
+{
+    // This Enum matchs the CorFieldAttr defined in CorHdr.h
+    public enum PEFileKinds
+    {
+        Dll = 0x0001,
+        ConsoleApplication = 0x0002,
+        WindowApplication = 0x0003,
+    }
+}
diff --git a/src/System.Private.CoreLib/shared/System/Reflection/Emit/PackingSize.cs b/src/System.Private.CoreLib/shared/System/Reflection/Emit/PackingSize.cs
new file mode 100644 (file)
index 0000000..f734e1a
--- /dev/null
@@ -0,0 +1,19 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+namespace System.Reflection.Emit
+{
+    public enum PackingSize
+    {
+        Unspecified = 0,
+        Size1 = 1,
+        Size2 = 2,
+        Size4 = 4,
+        Size8 = 8,
+        Size16 = 16,
+        Size32 = 32,
+        Size64 = 64,
+        Size128 = 128,
+    }
+}
diff --git a/src/System.Private.CoreLib/shared/System/Reflection/Emit/StackBehaviour.cs b/src/System.Private.CoreLib/shared/System/Reflection/Emit/StackBehaviour.cs
new file mode 100644 (file)
index 0000000..3e64b48
--- /dev/null
@@ -0,0 +1,51 @@
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
+// See the LICENSE file in the project root for more information.
+
+/*============================================================
+**
+** Enumeration: StackBehaviour
+**
+** Purpose: Exposes StackBehaviour Attribute of IL.
+**
+** THIS FILE IS AUTOMATICALLY GENERATED. DO NOT EDIT BY HAND!
+** See $(RepoRoot)\src\inc\OpCodeGen.pl for more information.**
+==============================================================*/
+
+using System;
+
+namespace System.Reflection.Emit
+{
+    public enum StackBehaviour
+    {
+        Pop0 = 0,
+        Pop1 = 1,
+        Pop1_pop1 = 2,
+        Popi = 3,
+        Popi_pop1 = 4,
+        Popi_popi = 5,
+        Popi_popi8 = 6,
+        Popi_popi_popi = 7,
+        Popi_popr4 = 8,
+        Popi_popr8 = 9,
+        Popref = 10,
+        Popref_pop1 = 11,
+        Popref_popi = 12,
+        Popref_popi_popi = 13,
+        Popref_popi_popi8 = 14,
+        Popref_popi_popr4 = 15,
+        Popref_popi_popr8 = 16,
+        Popref_popi_popref = 17,
+        Push0 = 18,
+        Push1 = 19,
+        Push1_push1 = 20,
+        Pushi = 21,
+        Pushi8 = 22,
+        Pushr4 = 23,
+        Pushr8 = 24,
+        Pushref = 25,
+        Varpop = 26,
+        Varpush = 27,
+        Popref_popi_pop1 = 28,
+    }
+}