private void BuildIndexes(NRefactory.ArrayInitializerExpression initializer, INode currentNodeIndex) { initializer.Elements.ForEach(e => { var childInitializer = e as NRefactory.ArrayInitializerExpression; if (childInitializer != null) { var newIndex = new ChildNode { ParentNode = currentNodeIndex }; newIndex.Root = currentNodeIndex.Root; newIndex.Index = currentNodeIndex.Nodes.Count; currentNodeIndex.Nodes.Add(newIndex); BuildIndexes(childInitializer, newIndex); } else { var newIndex = new LinqExpressionNode { ParentNode = currentNodeIndex }; newIndex.Root = currentNodeIndex.Root; newIndex.Index = currentNodeIndex.Nodes.Count; currentNodeIndex.Nodes.Add(newIndex); newIndex.Value = e.AcceptVisitor(Visitor, ParentScope); } }); }