string getOperandString(Instruction instr) { if (instr.Operand is Instruction) return getLabel((Instruction)instr.Operand); else if (instr.Operand is Instruction[]) { var sb = new StringBuilder(); var targets = (Instruction[])instr.Operand; for (int i = 0; i < targets.Length; i++) { if (i > 0) sb.Append(','); sb.Append(getLabel(targets[i])); } return sb.ToString(); } else if (instr.Operand is string) return Utils.toCsharpString((string)instr.Operand); else if (instr.Operand is ParameterDefinition) { var arg = (ParameterDefinition)instr.Operand; var s = instr.GetOperandString(); if (s != "") return s; return string.Format("<arg_{0}>", DotNetUtils.getArgIndex(method, arg)); } else return instr.GetOperandString(); }