public override string ToString()
        {
            var ret = new StringBuilder();

            ret.AppendFormat("{0}{1}(", this.ILCode.ToOpCode().Name, this.Type == null ? "" : ":" + this.Type.Value);
            if (this.Operand != null)
            {
                if (this.Operand is string)
                {
                    ASTConstant.EscapeString(ret, (string)this.Operand, true);
                }
                else if (this.Operand is IBasicBlock)
                {
                    ret.AppendFormat("Block_{0:x2}", ((IBasicBlock)this.Operand).Id);
                }
                else if (this.Operand is IBasicBlock[])
                {
                    System.Collections.Generic.IEnumerable <string> targets = ((IBasicBlock[])this.Operand).Select(block => string.Format("Block_{0:x2}", block.Id));
                    ret.AppendFormat("[{0}]", string.Join(", ", targets));
                }
                else
                {
                    ret.Append(this.Operand);
                }
                if (this.Arguments.Length > 0)
                {
                    ret.Append(";");
                }
            }
            for (int i = 0; i < this.Arguments.Length; i++)
            {
                if (i != 0)
                {
                    ret.Append(",");
                }
                ret.Append(this.Arguments[i]);
            }
            ret.Append(")");
            return(ret.ToString());
        }
        public override string ToString()
        {
            var ret = new StringBuilder();

            ret.AppendFormat("{0}{1}(", ILCode.ToOpCode().Name, Type == null ? "" : ":" + Type.Value);
            if (Operand != null)
            {
                if (Operand is string)
                {
                    ASTConstant.EscapeString(ret, (string)Operand, true);
                }
                else if (Operand is IBasicBlock)
                {
                    ret.AppendFormat("Block_{0:x2}", ((IBasicBlock)Operand).Id);
                }
                else if (Operand is IBasicBlock[])
                {
                    var targets = ((IBasicBlock[])Operand).Select(block => string.Format("Block_{0:x2}", block.Id));
                    ret.AppendFormat("[{0}]", string.Join(", ", targets));
                }
                else
                {
                    ret.Append(Operand);
                }
                if (Arguments.Length > 0)
                {
                    ret.Append(";");
                }
            }
            for (var i = 0; i < Arguments.Length; i++)
            {
                if (i != 0)
                {
                    ret.Append(",");
                }
                ret.Append(Arguments[i]);
            }
            ret.Append(")");
            return(ret.ToString());
        }