protected function doValidate($columns = null)
 {
     if (!$this->alreadyInValidation) {
         $this->alreadyInValidation = true;
         $retval = null;
         $failureMap = array();
         if ($this->aAcademicCalendarRelatedByParent !== null) {
             if (!$this->aAcademicCalendarRelatedByParent->validate($columns)) {
                 $failureMap = array_merge($failureMap, $this->aAcademicCalendarRelatedByParent->getValidationFailures());
             }
         }
         if ($this->aCurriculum !== null) {
             if (!$this->aCurriculum->validate($columns)) {
                 $failureMap = array_merge($failureMap, $this->aCurriculum->getValidationFailures());
             }
         }
         if ($this->aClassGroup !== null) {
             if (!$this->aClassGroup->validate($columns)) {
                 $failureMap = array_merge($failureMap, $this->aClassGroup->getValidationFailures());
             }
         }
         if ($this->aDepartment !== null) {
             if (!$this->aDepartment->validate($columns)) {
                 $failureMap = array_merge($failureMap, $this->aDepartment->getValidationFailures());
             }
         }
         if ($this->aCurrSystem !== null) {
             if (!$this->aCurrSystem->validate($columns)) {
                 $failureMap = array_merge($failureMap, $this->aCurrSystem->getValidationFailures());
             }
         }
         if (($retval = AcademicCalendarPeer::doValidate($this, $columns)) !== true) {
             $failureMap = array_merge($failureMap, $retval);
         }
         if ($this->collRegPeriods !== null) {
             foreach ($this->collRegPeriods as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collSubjectAccals !== null) {
             foreach ($this->collSubjectAccals as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collAcademicCosts !== null) {
             foreach ($this->collAcademicCosts as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collVAcademicCalendars !== null) {
             foreach ($this->collVAcademicCalendars as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collStudents !== null) {
             foreach ($this->collStudents as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collVStudents !== null) {
             foreach ($this->collVStudents as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collVCourseSchedules !== null) {
             foreach ($this->collVCourseSchedules as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collCounselings !== null) {
             foreach ($this->collCounselings as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collVCounselings !== null) {
             foreach ($this->collVCounselings as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collClassCourses !== null) {
             foreach ($this->collClassCourses as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collStudentLeaves !== null) {
             foreach ($this->collStudentLeaves as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collStudentThesiss !== null) {
             foreach ($this->collStudentThesiss as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collComprehensiveExams !== null) {
             foreach ($this->collComprehensiveExams as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collGradCeremonys !== null) {
             foreach ($this->collGradCeremonys as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collVStudentScores !== null) {
             foreach ($this->collVStudentScores as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collVRaports !== null) {
             foreach ($this->collVRaports as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collVFinalRaports !== null) {
             foreach ($this->collVFinalRaports as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collStudentAbsences !== null) {
             foreach ($this->collStudentAbsences as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collStudentJobHistorys !== null) {
             foreach ($this->collStudentJobHistorys as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collStudentMedicals !== null) {
             foreach ($this->collStudentMedicals as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collVSubjectAccalLectorStudents !== null) {
             foreach ($this->collVSubjectAccalLectorStudents as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         if ($this->collVSubjectAccalLectorStudentDetails !== null) {
             foreach ($this->collVSubjectAccalLectorStudentDetails as $referrerFK) {
                 if (!$referrerFK->validate($columns)) {
                     $failureMap = array_merge($failureMap, $referrerFK->getValidationFailures());
                 }
             }
         }
         $this->alreadyInValidation = false;
     }
     return !empty($failureMap) ? $failureMap : true;
 }