public static IEnumerable <SyntaxNode> BuildMethod(this RoslynTranslator roslynTranslator, KeyDownEventModel stack, IPortModel portModel) { BlockSyntax block = SyntaxFactory.Block(); roslynTranslator.BuildStack(stack, ref block); string methodName; switch (stack.mode) { case KeyDownEventModel.EventMode.Pressed: methodName = nameof(Input.GetKeyDown); break; case KeyDownEventModel.EventMode.Released: methodName = nameof(Input.GetKeyUp); break; default: methodName = nameof(Input.GetKey); break; } var conditionExpression = (ExpressionSyntax)roslynTranslator.BuildPort(stack.KeyPort).Single(); IfStatementSyntax keydownCheck = (SyntaxFactory.IfStatement( SyntaxFactory.InvocationExpression( SyntaxFactory.MemberAccessExpression( SyntaxKind.SimpleMemberAccessExpression, SyntaxFactory.IdentifierName(nameof(Input)), SyntaxFactory.IdentifierName(methodName))) .WithArgumentList( SyntaxFactory.ArgumentList( SyntaxFactory.SingletonSeparatedList( SyntaxFactory.Argument( conditionExpression)))), block) .NormalizeWhitespace()); roslynTranslator.AddEventRegistration(keydownCheck); yield break; }