public void Create(object obj, IStringGraph stringGraph)
        {
            var reflectedObject = _objectDescriptorFactory.Create(obj);

            var queue = new Queue <IObjectDescriptor>();

            queue.Enqueue(reflectedObject);
            var visitedList = new List <IObjectDescriptor> {
                reflectedObject
            };

            stringGraph.AddVertex(reflectedObject.Description);
            while (queue.Count > 0)
            {
                var curRoot = queue.Dequeue();

                foreach (var reflectedChild in curRoot.InnerObjectsDescriptors)
                {
                    stringGraph.AddVertex(reflectedChild.Description);
                    stringGraph.AddEdge(curRoot.Description, reflectedChild.Description);
                    if (!visitedList.Contains(reflectedChild))
                    {
                        queue.Enqueue(reflectedChild);
                        visitedList.Add(reflectedChild);
                    }
                }
            }
        }
        public void Create(object obj, IStringGraph stringGraph)
        {
            var reflectedObject = _objectDescriptorFactory.Create(obj);

            var queue = new Queue<IObjectDescriptor>();

            queue.Enqueue(reflectedObject);
            var visitedList = new List<IObjectDescriptor> { reflectedObject };
            stringGraph.AddVertex(reflectedObject.Description);
            while (queue.Count > 0)
            {
                var curRoot = queue.Dequeue();

                foreach (var reflectedChild in curRoot.InnerObjectsDescriptors)
                {
                    stringGraph.AddVertex(reflectedChild.Description);
                    stringGraph.AddEdge(curRoot.Description, reflectedChild.Description);
                    if (!visitedList.Contains(reflectedChild))
                    {
                        queue.Enqueue(reflectedChild);
                        visitedList.Add(reflectedChild);
                    }
                }
            }
        }