private static void AppendIL(MethodInfo method, StringWriter sw, ITypeFactory typeFactory)
{
ILReader reader = ILReaderFactory.Create(method);
ExceptionInfo[] exceptions = reader.ILProvider.GetExceptionInfos();
var writer = new RichILStringToTextWriter(sw, exceptions);
sw.WriteLine(".method " + method.ToIL());
sw.WriteLine("{");
sw.WriteLine(" .maxstack " + reader.ILProvider.MaxStackSize);
byte[] sig = reader.ILProvider.GetLocalSignature();
var lsp = new LocalsSignatureParser(reader.Resolver, typeFactory);
var locals = default(Type[]);
if (lsp.Parse(sig, out locals) && locals.Length > 0)
{
sw.WriteLine(" .locals init (");
for (var i = 0; i < locals.Length; i++)
{
sw.WriteLine($" [{i}] {locals[i].ToIL()}{(i != locals.Length - 1 ? "," : "")}");
}
sw.WriteLine(" )");
}
sw.WriteLine();
writer.Indent();
reader.Accept(new ReadableILStringVisitor(writer));
writer.Dedent();
sw.WriteLine("}");
}