protected function EnsureLessonDisbandAccess($lessonID)
 {
     global $USER;
     if (!$this->oAccess->IsLessonAccessible($lessonID, CLearnAccess::OP_LESSON_REMOVE, true)) {
         throw new CLearnRenderAdminUnilessonListException('', CLearnRenderAdminUnilessonListException::C_ACCESS_DENIED);
     }
     // ensure, that all childs can be unlinked from lesson
     $arChildEdges = CLearnLesson::ListImmediateChilds($lessonID);
     if (count($arChildEdges) > 0) {
         if (!$this->oAccess->IsLessonAccessible($lessonID, CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, true)) {
             throw new CLearnRenderAdminUnilessonListException('', CLearnRenderAdminUnilessonListException::C_ACCESS_DENIED);
         }
         foreach ($arChildEdges as $arChildEdge) {
             if (!$this->oAccess->IsLessonAccessible($arChildEdge['CHILD_LESSON'], CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, true)) {
                 throw new CLearnRenderAdminUnilessonListException('', CLearnRenderAdminUnilessonListException::C_ACCESS_DENIED);
             }
         }
     }
     // ensure, that all parents can be unlinked from lesson
     $arParentEdges = CLearnLesson::ListImmediateParents($lessonID);
     if (count($arParentEdges) > 0) {
         if (!$this->oAccess->IsLessonAccessible($lessonID, CLearnAccess::OP_LESSON_UNLINK_FROM_PARENTS, true)) {
             throw new CLearnRenderAdminUnilessonListException('', CLearnRenderAdminUnilessonListException::C_ACCESS_DENIED);
         }
         foreach ($arParentEdges as $arParentEdge) {
             if (!$this->oAccess->IsLessonAccessible($arParentEdge['PARENT_LESSON'], CLearnAccess::OP_LESSON_UNLINK_DESCENDANTS, true)) {
                 throw new CLearnRenderAdminUnilessonListException('', CLearnRenderAdminUnilessonListException::C_ACCESS_DENIED);
             }
         }
     }
     return $this;
 }