/// <summary>
        /// Conditionally branches to the given label, popping one operand from the stack.
        /// </summary>
        /// <param name="label"> The label to branch to. </param>
        /// <param name="opCode"> The one-byte operation identifier. </param>
        /// <param name="operandType"> The type of operand to pop from the stack. </param>
        private void BranchCore(ILLabel label, byte opCode, VESType operandType)
        {
            // Emit the branch opcode.
            Emit1ByteOpCode(opCode, 1, 0);

            // The instruction pops one value from the stack and pushes none.
            PopStackOperands(operandType);

            // Emit the label.
            EmitLabel(label, this.offset + 4);
        }
 private void PushStackOperand(VESType type)
 {
     this.operands.Push(type);
     if (this.operands.Count != this.stackSize)
         throw new InvalidOperationException("Inconsistant internal stack sizes.");
 }