Task InnerInvoke(Context context, int currentIndex = 0) { if (currentIndex == executingElements.Count) { return(Task.CompletedTask); } ElementInstance element = executingElements[currentIndex]; return(element.Invoke(context, ctx => InnerInvoke(ctx, currentIndex + 1))); }