private static async Task <CompilationUnitSyntax> GeneratePartialDeclaration(Document document, TypeDeclarationSyntax typeDecl, bool isOptional, CancellationToken cancellationToken) { var properties = typeDecl.Members.OfType <PropertyDeclarationSyntax>().Where(p => p.IsAutoProperty()); var newCtor = GenerateConstructor(typeDecl.Identifier.Text, properties, isOptional); var name = typeDecl.Identifier.Text; var newTypeDecl = typeDecl.CreatePartialTypeDelaration() .AddMembers(newCtor) .WithAdditionalAnnotations(Formatter.Annotation); var ns = typeDecl.FirstAncestorOrSelf <NamespaceDeclarationSyntax>()?.Name.WithoutTrivia().GetText().ToString(); MemberDeclarationSyntax topDecl; if (ns != null) { topDecl = NamespaceDeclaration(IdentifierName(ns)) .AddMembers(newTypeDecl) .WithAdditionalAnnotations(Formatter.Annotation); } else { topDecl = newTypeDecl; } var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false) as CompilationUnitSyntax; return(CompilationUnit().AddUsings(root.Usings.ToArray()) .AddMembers(topDecl) .WithTrailingTrivia(CarriageReturnLineFeed) .WithAdditionalAnnotations(Formatter.Annotation)); }