/// <summary>
        ///
        /// </summary>
        /// <param name="index"></param>
        /// <returns></returns>
        //public override Node RemoveChild(int index) {
        //    OctreeNode child = (OctreeNode)base.RemoveChild(index);
        //    child.RemoveNodeAndchildren();
        //    return child;
        //}

        /// <summary>
        ///
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        public override Node RemoveChild(string childName)
        {
            OctreeNode child = (OctreeNode)base.RemoveChild(childName);

            if (child == null)
            {
                throw new ArgumentException(string.Format("There is no child with the name '{0}' to remove from node '{1}'.", childName, this.name));
            }
            child.RemoveNodeAndchildren();
            return(child);
        }