private ParamContext InitContext <T>(string methodXml, int fxIndex, bool forceAlignment = false, string ns1 = "mdoc.Test", string ns2 = "mdoc.Test2") { Func <int, bool> indexCheck = fi => fi < 2; if (typeof(T) == typeof(MyClass2)) { indexCheck = fi => fi != 1; } bool useFirst = forceAlignment || indexCheck(fxIndex); var doc = new XmlDocument(); //doc.PreserveWhitespace = true; doc.LoadXml(methodXml); var beforeXML = doc.OuterXml; XmlElement root = doc.SelectSingleNode("//Docs") as XmlElement; // Docs TypeDefinition type = GetDefinition <T> (ns1); var method = type.Methods.First(m => m.Name == "Meth") as MethodReference; var parameters = method.Parameters.ToList(); TypeDefinition type2 = GetDefinition <T> (ns2); var method2 = type2.Methods.First(m => m.Name == "Meth") as MethodReference; var parameters2 = method2.Parameters.ToList(); // updater var updater = new MDocUpdater(); var fx = new FrameworkIndex("", 3, null); fx.Frameworks.Add(new FrameworkEntry(fx.Frameworks, fx.Frameworks) { Id = "One", Name = "One", Replace = ns2, With = ns1 }); fx.Frameworks.Add(new FrameworkEntry(fx.Frameworks, fx.Frameworks) { Id = "Three", Name = "Three", Replace = ns2, With = ns1 }); fx.Frameworks.Add(new FrameworkEntry(fx.Frameworks, fx.Frameworks) { Id = "Two", Name = "Two", Replace = ns2, With = ns1 }); var i = 0; foreach (var f in fx.Frameworks) { if (indexCheck(i) || forceAlignment) { var t = f.ProcessType(type, type.Module.Assembly); t.ProcessMember(method); var aset = new AssemblySet(new[] { "one.dll" }); f.AddAssemblySet(aset); } else { var t = f.ProcessType(type2, type2.Module.Assembly); t.ProcessMember(method2); } i++; } updater.InitializeFrameworksCache(fx); return(new ParamContext() { doc = doc, beforeXML = beforeXML, method = useFirst ? method : method2, parameters = useFirst ? parameters : parameters2, fx = fx, updater = updater }); }