public virtual void Process(ILInstruction ilInstruction, string operandString)
 {
     _writer.WriteLine("IL_{0:x4}: {1,-10} {2}",
         ilInstruction.Offset,
         ilInstruction.OpCode.Name,
         operandString);
 }
 public override void Process(ILInstruction ilInstruction, string operandString)
 {
     _writer.WriteLine("IL_{0:x4}: {1,-4}| {2, -8}",
         ilInstruction.Offset,
         ilInstruction.OpCode.Value.ToString("x2"),
         operandString);
 }
        public override void Process(ILInstruction instruction, string operandString)
        {
            var endCount = 0;
            if (_endCounts.TryGetValue(instruction.Offset, out endCount))
            {
                for (var i = 0; i < endCount; i++)
                {
                    Dedent();
                    _writer.WriteLine(_indent + "}");
                }
            }

            var startCount = 0;
            if (_startCounts.TryGetValue(instruction.Offset, out startCount))
            {
                for (var i = 0; i < startCount; i++)
                {
                    _writer.WriteLine(_indent + ".try");
                    _writer.WriteLine(_indent + "{");
                    Indent();
                }
            }

            var t = default(Type);
            if (_startCatch.TryGetValue(instruction.Offset, out t))
            {
                Dedent();
                _writer.WriteLine(_indent + "}");
                _writer.WriteLine(_indent + $"catch ({t.ToIL()})");
                _writer.WriteLine(_indent + "{");
                Indent();
            }

            if (_startFilter.Contains(instruction.Offset))
            {
                Dedent();
                _writer.WriteLine(_indent + "}");
                _writer.WriteLine(_indent + "filter");
                _writer.WriteLine(_indent + "{");
                Indent();
            }

            if (_startFinally.Contains(instruction.Offset))
            {
                Dedent();
                _writer.WriteLine(_indent + "}");
                _writer.WriteLine(_indent + "finally");
                _writer.WriteLine(_indent + "{");
                Indent();
            }

            if (_startFault.Contains(instruction.Offset))
            {
                Dedent();
                _writer.WriteLine(_indent + "}");
                _writer.WriteLine(_indent + "fault");
                _writer.WriteLine(_indent + "{");
                Indent();
            }

            _writer.WriteLine(string.Format("{3}IL_{0:x4}: {1,-10} {2}",
                instruction.Offset,
                instruction.OpCode.Name,
                operandString,
                _indent));
        }