protected static void InitFromModelImpl(string moduleID, IModelObject root, Stack <IModelObject> parents, MemberRefIdx?parent, List <ObjectInfo> res, Dictionary <ObjectRef, IModelObject> mapObjests) { ObjInfo info = root.GetObjectInfo(moduleID, parents); res.Add(new ObjectInfo(info.ID, info.DisplayName, info.ClassName, parent, info.Variables)); ObjectRef key = info.ID; if (mapObjests.ContainsKey(key)) { throw new Exception("Object id is not unique: " + key); } mapObjests[key] = root; if (info.ChildObjects == null) { return; } parents.Push(root); foreach (ChildObjectsInMember member in info.ChildObjects) { int i = 0; foreach (IModelObject obj in member.ChildObjects) { MemberRefIdx par = MemberRefIdx.Make(info.ID, member.MemberName, i); InitFromModelImpl(moduleID, obj, parents, par, res, mapObjests); i += 1; } } parents.Pop(); }