public static Instruction Create(OpCode opcode, Instruction[] targets)
        {
            if (targets == null)
                throw new ArgumentNullException("targets");
            if (opcode.OperandType != OperandType.InlineSwitch)
                throw new ArgumentException("opcode");

            return new Instruction(opcode, targets);
        }
 public Instruction Create(OpCode opcode, CallSite site)
 {
     return Instruction.Create(opcode, site);
 }
 public Instruction Create(OpCode opcode, FieldReference field)
 {
     return Instruction.Create(opcode, field);
 }
 public void Emit(OpCode opcode, VariableDefinition variable)
 {
     Append(Create(opcode, variable));
 }
 public Instruction Create(OpCode opcode)
 {
     return Instruction.Create(opcode);
 }
 public void Emit(OpCode opcode, long value)
 {
     Append(Create(opcode, value));
 }
 public void Emit(OpCode opcode, double value)
 {
     Append(Create(opcode, value));
 }
 static void MakeMacro(Instruction instruction, OpCode opcode)
 {
     instruction.OpCode = opcode;
     instruction.Operand = null;
 }
        public Instruction Create(OpCode opcode, int value)
        {
            if (opcode.OperandType == OperandType.InlineVar)
                return Instruction.Create(opcode, body.Variables[value]);

            if (opcode.OperandType == OperandType.InlineArg)
                return Instruction.Create(opcode, body.GetParameter(value));

            return Instruction.Create(opcode, value);
        }
 internal Instruction(OpCode opcode, object operand)
 {
     this.opcode = opcode;
     this.operand = operand;
 }
 static void ExpandMacro(Instruction instruction, OpCode opcode, object operand)
 {
     instruction.OpCode = opcode;
     instruction.Operand = operand;
 }
 internal Instruction(int offset, OpCode opCode)
 {
     this.offset = offset;
     this.opcode = opCode;
 }
        public static Instruction Create(OpCode opcode, ParameterDefinition parameter)
        {
            if (parameter == null)
                throw new ArgumentNullException("parameter");
            if (opcode.OperandType != OperandType.ShortInlineArg &&
                opcode.OperandType != OperandType.InlineArg)
                throw new ArgumentException("opcode");

            return new Instruction(opcode, parameter);
        }
        public static Instruction Create(OpCode opcode, VariableDefinition variable)
        {
            if (variable == null)
                throw new ArgumentNullException("variable");
            if (opcode.OperandType != OperandType.ShortInlineVar &&
                opcode.OperandType != OperandType.InlineVar)
                throw new ArgumentException("opcode");

            return new Instruction(opcode, variable);
        }
 public void Emit(OpCode opcode, CallSite site)
 {
     Append(Create(opcode, site));
 }
 public Instruction Create(OpCode opcode, double value)
 {
     return Instruction.Create(opcode, value);
 }
 public void Emit(OpCode opcode, FieldReference field)
 {
     Append(Create(opcode, field));
 }
 public Instruction Create(OpCode opcode, Instruction[] targets)
 {
     return Instruction.Create(opcode, targets);
 }
 public void Emit(OpCode opcode, float value)
 {
     Append(Create(opcode, value));
 }
 public Instruction Create(OpCode opcode, VariableDefinition variable)
 {
     return Instruction.Create(opcode, variable);
 }
 public void Emit(OpCode opcode, Instruction[] targets)
 {
     Append(Create(opcode, targets));
 }
 public Instruction Create(OpCode opcode, ParameterDefinition parameter)
 {
     return Instruction.Create(opcode, parameter);
 }
 public void Emit(OpCode opcode, ParameterDefinition parameter)
 {
     Append(Create(opcode, parameter));
 }
 public void Emit(OpCode opcode)
 {
     Append(Create(opcode));
 }
 public Instruction Create(OpCode opcode, TypeReference type)
 {
     return Instruction.Create(opcode, type);
 }
 public void Emit(OpCode opcode, TypeReference type)
 {
     Append(Create(opcode, type));
 }
 public Instruction Create(OpCode opcode, MethodReference method)
 {
     return Instruction.Create(opcode, method);
 }
 public void Emit(OpCode opcode, MethodReference method)
 {
     Append(Create(opcode, method));
 }
 void WriteOpCode(OpCode opcode)
 {
     if (opcode.Size == 1)
     {
         WriteByte(opcode.Op2);
     }
     else
     {
         WriteByte(opcode.Op1);
         WriteByte(opcode.Op2);
     }
 }
        public static Instruction Create(OpCode opcode, Instruction target)
        {
            if (target == null)
                throw new ArgumentNullException("target");
            if (opcode.OperandType != OperandType.InlineBrTarget &&
                opcode.OperandType != OperandType.ShortInlineBrTarget)
                throw new ArgumentException("opcode");

            return new Instruction(opcode, target);
        }