private static List <MemberDeclarationSyntax> CreateConstructor(
     string className,
     string parameterName)
 {
     return(new MemberDeclarationSyntax[]
     {
         SyntaxFactory.GlobalStatement(
             SyntaxFactory.LocalFunctionStatement(
                 SyntaxFactory.IdentifierName(className),
                 SyntaxFactory.MissingToken(SyntaxKind.IdentifierToken))
             .WithModifiers(SyntaxFactory.TokenList(SyntaxTokenFactory.PrivateKeyword()))
             .WithParameterList(SyntaxParameterListFactory.CreateWithOneItem(nameof(ActionResult), parameterName))
             .WithSemicolonToken(
                 SyntaxFactory.MissingToken(
                     SyntaxFactory.TriviaList(),
                     SyntaxKind.SemicolonToken,
                     SyntaxFactory.TriviaList(
                         SyntaxFactory.Trivia(
                             SyntaxFactory.SkippedTokensTrivia()
                             .WithTokens(
                                 SyntaxFactory.TokenList(
                                     SyntaxTokenFactory.Colon()))))))),
         SyntaxFactory.GlobalStatement(
             SyntaxFactory.ExpressionStatement(
                 SyntaxFactory.InvocationExpression(
                     SyntaxFactory.BaseExpression())
                 .WithArgumentList(
                     SyntaxFactory.ArgumentList(
                         SyntaxFactory.SingletonSeparatedList(
                             SyntaxFactory.Argument(SyntaxFactory.IdentifierName(parameterName))))))
             .WithSemicolonToken(SyntaxFactory.MissingToken(SyntaxKind.SemicolonToken))),
         SyntaxFactory.GlobalStatement(SyntaxFactory.Block()),
     }.ToList());
 }
        private static MethodDeclarationSyntax CreateMembersForEndpointsPrivateHelper(
            KeyValuePair <OperationType, OpenApiOperation> apiOperation,
            bool hasRouteParameters)
        {
            var operationName              = apiOperation.Value.GetOperationName();
            var interfaceName              = "I" + operationName + NameConstants.ContractHandler;
            var methodName                 = $"Invoke{operationName}Async";
            var parameterTypeName          = operationName + NameConstants.ContractParameters;
            var hasParametersOrRequestBody = apiOperation.Value.HasParametersOrRequestBody() || hasRouteParameters;

            // Create method # use CreateParameterList & CreateCodeBlockReturnStatement
            var methodDeclaration = SyntaxFactory.MethodDeclaration(
                SyntaxFactory.GenericName(SyntaxFactory.Identifier(nameof(Task)))
                .WithTypeArgumentList(SyntaxTypeArgumentListFactory.CreateWithOneItem(nameof(ActionResult))),
                SyntaxFactory.Identifier(methodName))
                                    .AddModifiers(SyntaxTokenFactory.PrivateKeyword())
                                    .AddModifiers(SyntaxTokenFactory.StaticKeyword())
                                    .AddModifiers(SyntaxTokenFactory.AsyncKeyword())
                                    .WithParameterList(CreateParameterList(hasParametersOrRequestBody, parameterTypeName, interfaceName, false))
                                    .WithBody(
                SyntaxFactory.Block(
                    CreateCodeBlockReturnStatementForHelper(hasParametersOrRequestBody)));

            return(methodDeclaration);
        }