internal void TransformList <T>(ref StructList <T> list) where T : AstNode { for (var i = 0; i < list.Count; i++) { var originalNode = list[i]; var item = Transform(originalNode, true); if (item == Remove) { list.RemoveAt(i); Modified = true; i--; } else if (item is AstSpreadStructList <T> spreadList) { list.ReplaceItemAt(i, spreadList.NodeList); Modified = true; } else { if (originalNode != item) { Modified = true; } list[i] = (T)item; } } }