public static IEnumerable <SyntaxNode> BuildMethod(this RoslynTranslator roslynTranslator, IFunctionModel stack, IPortModel portModel) { roslynTranslator.ClearBuiltStacks(); var generatedName = roslynTranslator.MakeUniqueName(stack.CodeTitle); var methodSyntaxNode = RoslynBuilder.DeclareMethod( generatedName, AccessibilityFlags.Public, stack.ReturnType.Resolve(roslynTranslator.Stencil)); var localDeclarationNodes = BuildLocalDeclarations(roslynTranslator, stack); var argumentNodes = BuildArguments(roslynTranslator.Stencil, stack); methodSyntaxNode = methodSyntaxNode.WithParameterList(SyntaxFactory.ParameterList( SyntaxFactory.SeparatedList(argumentNodes.ToArray()))); methodSyntaxNode = methodSyntaxNode.WithBody(SyntaxFactory.Block(localDeclarationNodes.ToArray())); if (stack.EnableProfiling) { throw new NotImplementedException("BuildMethod Profiling not implemented"); // methodSyntaxNode = methodSyntaxNode.WithAdditionalAnnotations(InstrumentForProfiling.profilingAnnotation); } BlockSyntax stackBlock = SyntaxFactory.Block(); roslynTranslator.BuildStack(stack, ref stackBlock); foreach (var statement in stackBlock.Statements) { methodSyntaxNode = methodSyntaxNode.AddBodyStatements(statement); } yield return(methodSyntaxNode); }