private static ClassDeclarationSyntax InjectInConstructor(ClassDeclarationSyntax classNode, SimpleNameSyntax symbolName, SyntaxToken fieldName)
        {
            string paramName      = ToVariableName(symbolName);
            var    oldConstructor = (ConstructorDeclarationSyntax)classNode.Members.FirstOrDefault(m => m.IsKind(SyntaxKind.ConstructorDeclaration));
            var    constructor    = oldConstructor;

            if (constructor == null)
            {
                constructor = SyntaxFactory.ConstructorDeclaration(classNode.Identifier)
                              .AddModifiers(SyntaxFactory.Token(SyntaxKind.PublicKeyword))
                              .NormalizeWhitespace();
            }
            constructor = constructor.AddParameterListParameters(
                SyntaxFactory.Parameter(SyntaxFactory.Identifier(paramName))
                .WithType(symbolName))
                          .AddBodyStatements(SyntaxFactory.ExpressionStatement(SyntaxFactory.AssignmentExpression(
                                                                                   SyntaxKind.SimpleAssignmentExpression,
                                                                                   SyntaxFactory.IdentifierName(fieldName),
                                                                                   SyntaxFactory.IdentifierName(paramName))));

            if (oldConstructor != null)
            {
                classNode = classNode.ReplaceNode(oldConstructor, constructor);
            }
            else
            {
                classNode = classNode.AddSortedMembers(constructor);
            }

            return(classNode);
        }
        private static ClassDeclarationSyntax AddField(ClassDeclarationSyntax classNode, SimpleNameSyntax serviceType, SyntaxToken fieldIdentifier)
        {
            var field = SyntaxFactory.FieldDeclaration(
                SyntaxFactory.VariableDeclaration(serviceType,
                                                  SyntaxFactory.SingletonSeparatedList(SyntaxFactory.VariableDeclarator(fieldIdentifier))))
                        .WithModifiers(SyntaxFactory.TokenList(
                                           SyntaxFactory.Token(SyntaxKind.PrivateKeyword),
                                           SyntaxFactory.Token(SyntaxKind.ReadOnlyKeyword)))
                        .WithLeadingTrivia(SyntaxFactory.ElasticEndOfLine("\r\n"));

            return(classNode.AddSortedMembers(field));
        }