private Document MoveTypeToFile(Document document, BaseTypeDeclarationSyntax typeDeclaration, string newFileName)
        {
            var nameSpaces = typeDeclaration.GetAncestorsOrThis<NamespaceDeclarationSyntax>().Reverse();
            var root = typeDeclaration.GetAncestorOrThis<CompilationUnitSyntax>();


            //agregate -> create namespaces from bottom to top
            var rootNameSpace = nameSpaces.Aggregate(typeDeclaration, (MemberDeclarationSyntax curentBody, NamespaceDeclarationSyntax curentNamespace) =>
            {
                var newBody = new SyntaxList<MemberDeclarationSyntax>().Add(curentBody);
                return SyntaxFactory.NamespaceDeclaration(curentNamespace.Name, curentNamespace.Externs, curentNamespace.Usings, newBody)
                                    .WithLeadingTrivia(curentNamespace.GetLeadingTrivia())
                                    .WithTrailingTrivia(curentNamespace.GetTrailingTrivia());
            });

            var newRoot = SyntaxFactory.CompilationUnit(root.Externs, root.Usings, root.AttributeLists, new SyntaxList<MemberDeclarationSyntax>().Add(rootNameSpace));

            var newDoc = document.Project.AddDocument(newFileName, newRoot, document.Folders);
            return newDoc;
        }