/// <summary> /// Performs the code generation /// </summary> /// <param name="diagram">The diagram this node is on</param> /// <param name="terminalAssociator">Our terminal association manager</param> /// <param name="targetInfo">Semantic analysis target</param> /// <param name="cancellationToken">Cancelation token</param> public override Task DecomposeAsync(Diagram diagram, DecompositionTerminalAssociator terminalAssociator, ISemanticAnalysisTargetInfo targetInfo, CompileCancellationToken cancellationToken) { NIType methodType = CreateMethodType(); var methodCall = MethodCall.CreateWithErrorTerminals(diagram, methodType.GetDeclaringType(), methodType); methodCall.UpdateTerminals(); terminalAssociator.AssociateTerminalByName("names", methodCall.GetTerminalByName("names")); terminalAssociator.AssociateTerminalByName("extra name", methodCall.GetTerminalByName("extraName")); terminalAssociator.AssociateTerminalByName("length", methodCall.OutputTerminals.Last()); return(AsyncHelpers.CompletedTask); }