// ----------------------------------------------------------------------
 public void ForEachChildRecursiveDepthLast(iCS_EditorObject parent, Action <iCS_EditorObject> fnc)
 {
     DetectUndoRedo();
     if (parent == null)
     {
         EditorObjects[0].ForEachRecursiveDepthLast(child => fnc(child));
     }
     else
     {
         parent.ForEachChildRecursiveDepthLast(child => fnc(child));
     }
 }
        public bool IsBelowInHierarchyTo(iCS_EditorObject node)
        {
            bool result = false;

            node.ForEachChildRecursiveDepthLast(
                c => {
                if (c == this)
                {
                    result = true;
                }
            }
                );
            return(result);
        }