static async Task ProcessAsync(string code)
        {
            SyntaxTree tree = CSharpSyntaxTree.ParseText(code);
            var compilation = CSharpCompilation.Create("Sample")
                .AddReferences(MetadataReference.CreateFromFile(typeof(object).Assembly.Location))
                .AddSyntaxTrees(tree);

            SemanticModel semanticModel = compilation.GetSemanticModel(tree);

            var propertyRewriter = new AutoPropertyRewriter(semanticModel);

            SyntaxNode root = await tree.GetRootAsync().ConfigureAwait(false);
            SyntaxNode rootWithAutoProperties = propertyRewriter.Visit(root);

            compilation = compilation.RemoveAllSyntaxTrees().AddSyntaxTrees(rootWithAutoProperties.SyntaxTree);
            semanticModel = compilation.GetSemanticModel(rootWithAutoProperties.SyntaxTree);
            var fieldRewriter = new RemoveBackingFieldRewriter(semanticModel, propertyRewriter.FieldsToRemove.ToArray());
            SyntaxNode rootWithFieldsRemoved = fieldRewriter.Visit(rootWithAutoProperties);
            WriteLine(rootWithFieldsRemoved);

        }
        static async Task ProcessAsync(string code)
        {
            SyntaxTree tree        = CSharpSyntaxTree.ParseText(code);
            var        compilation = CSharpCompilation.Create("Sample")
                                     .AddReferences(MetadataReference.CreateFromFile(typeof(object).Assembly.Location))
                                     .AddSyntaxTrees(tree);

            SemanticModel semanticModel = compilation.GetSemanticModel(tree);

            var propertyRewriter = new AutoPropertyRewriter(semanticModel);

            SyntaxNode root = await tree.GetRootAsync().ConfigureAwait(false);

            SyntaxNode rootWithAutoProperties = propertyRewriter.Visit(root);

            compilation   = compilation.RemoveAllSyntaxTrees().AddSyntaxTrees(rootWithAutoProperties.SyntaxTree);
            semanticModel = compilation.GetSemanticModel(rootWithAutoProperties.SyntaxTree);
            var        fieldRewriter         = new RemoveBackingFieldRewriter(semanticModel, propertyRewriter.FieldsToRemove.ToArray());
            SyntaxNode rootWithFieldsRemoved = fieldRewriter.Visit(rootWithAutoProperties);

            WriteLine(rootWithFieldsRemoved);
        }