public Node[] Render <T>(IEnumerable <T> items, RenderItemWithKey <T> render) { var toRender = new List <Node>(); int itemIdx = 0; foreach (var item in items) { var(key, rendered) = render(item, itemIdx); rendered.Name = obj.name + $"({key})"; toRender.Add(rendered); itemIdx++; if (!keys.Contains(key)) { var go = Instantiate(obj, wrapper); go.SetActive(true); go.name = obj.name + $"({key})"; keys.Add(key); } } return(new Node[] { toRender.Count > 0 ? DSL.Draw(wrapper.name, toRender.ToArray()) : DSL.Draw(wrapper.name) }); }