/// <summary>
        /// Initializes a new instance of the <see cref="CrossReferenceTreeMutableCore"/> class.
        /// </summary>
        /// <param name="crossReferencingTree">
        /// The cross referencing tree. 
        /// </param>
        /// <param name="serviceRetrievalManager">
        /// The service retrieval manager. 
        /// </param>
        public CrossReferenceTreeMutableCore(
            ICrossReferencingTree crossReferencingTree, IServiceRetrievalManager serviceRetrievalManager)
        {
            this._referencingObjects = new List<ICrossReferenceTreeMutable>();
            if (serviceRetrievalManager != null)
            {
                this._maintainableMutableObject =
                    serviceRetrievalManager.CreateStub(crossReferencingTree.Maintainable).MutableInstance;
            }
            else
            {
                this._maintainableMutableObject = crossReferencingTree.Maintainable.MutableInstance;
            }

            foreach (ICrossReferencingTree currentChildReference in crossReferencingTree.ReferencingStructures)
            {
                this._referencingObjects.Add(new CrossReferenceTreeMutableCore(currentChildReference));
            }
        }
 /// <summary>
 /// Initializes a new instance of the <see cref="CrossReferenceTreeMutableCore"/> class.
 /// </summary>
 /// <param name="crossReferencingTree">
 /// The cross referencing tree. 
 /// </param>
 public CrossReferenceTreeMutableCore(ICrossReferencingTree crossReferencingTree)
     : this(crossReferencingTree, null)
 {
 }