static CompilationUnitSyntax RemovePrivateMethods(CompilationUnitSyntax root) { List<SyntaxNode> removes = new List<SyntaxNode>(); var classes = root.DescendantNodes().OfType<ClassDeclarationSyntax>(); foreach (var @class in classes) { var methods = @class.Members.OfType<MethodDeclarationSyntax>(); foreach (var method in methods) { SyntaxTokenList modifiers = method.Modifiers; bool result = false; foreach (SyntaxToken m in modifiers) { if (m.Text.Equals("private")) { result = true; removes.Add(method); break; } } } } root = root.RemoveNodes(removes,SyntaxRemoveOptions.KeepDirectives); return root; }