public override void DefaultIn(Node node) { if (isFirst) { isFirst = false; } else { int index = 0; CloneMethod.GetChildTypeIndex getChildTypeIndex = new CloneMethod.GetChildTypeIndex() { Parent = node.Parent(), Child = node }; node.Parent().Apply(getChildTypeIndex); index = getChildTypeIndex.Index; CloneMethod.GetChildTypeByIndex getChildTypeByIndex = new CloneMethod.GetChildTypeByIndex() { Child = node, Index = index, Parent = currentClone }; currentClone.Apply(getChildTypeByIndex); currentClone = getChildTypeByIndex.Child; } if (node is ANamedType && data.GenericLinks.ContainsKey((ANamedType)node)) { TIdentifier name = data.GenericLinks[(ANamedType)node]; AStructDecl str = (AStructDecl)name.Parent(); PType type = types[str.GetGenericVars().IndexOf(name)]; replacer = Util.MakeClone(type, data); } }