if (!programs.contains(registration.getDegree())) {
continue;
}
final StudentCurricularPlan studentCurricularPlan = registration.getLastStudentCurricularPlan();
for (final CycleCurriculumGroup cycle : studentCurricularPlan.getCycleCurriculumGroups()) {
if (cycle.getConclusionProcess() != null) {
continue;
}
final DegreeCurricularPlan degreeCurricularPlan = cycle.getDegreeCurricularPlanOfDegreeModule();
final List<DegreeModule> modules =
degreeCurricularPlan.getDcpDegreeModules(OptionalCurricularCourse.class,
ExecutionYear.readCurrentExecutionYear());
final Iterator<DegreeModule> degreeModulesIter = modules.iterator();
while (degreeModulesIter.hasNext()) {
final CurricularCourse curricularCourse = (CurricularCourse) degreeModulesIter.next();
if (studentCurricularPlan.isApproved(curricularCourse)
|| studentCurricularPlan.getCurricularCoursePossibleGroupsWithoutNoCourseGroupCurriculumGroups(
curricularCourse).isEmpty()) {
degreeModulesIter.remove();
}
}