public TemplateInformation GenerateTemplateInfoForInterfaceList(List<InterfaceDeclarationSyntax> interfaceList) { var usings = interfaceList .SelectMany(interfaceTree => { var rootNode = interfaceTree.Parent; while (rootNode.Parent != null) rootNode = rootNode.Parent; return rootNode.DescendantNodes() .OfType<UsingDirectiveSyntax>() .Select(x => string.Format("{0} {1}", x.Alias, x.Name).TrimStart()); }) .Distinct() .Where(x => x != "System" && x != "System.Net.Http" && x != "System.Collections.Generic" && x != "System.Linq") .Select(x => new UsingDeclaration() { Item = x }); var ret = new TemplateInformation() { ClassList = interfaceList.Select(x => GenerateClassInfoForInterface(x)).ToList(), UsingList = usings.ToList(), }; return ret; }