}
    public StrategySugestion sugest(List<Vigilant> vigilants, WrittenEvaluation writtenEvaluation) {        List<Vigilant> vigilantSugestion = new ArrayList<Vigilant>();        Set<Person> incompatiblePersons = new HashSet<Person>();        List<Vigilant> unavailableVigilants = new ArrayList<Vigilant>();        List<Vigilant> teachersThatTeachClass = new ArrayList<Vigilant>();        if (writtenEvaluation.hasAnyConvokes()) {            incompatiblePersons.addAll(getIncompatiblePersons(writtenEvaluation));        }        final List<ExecutionCourse> executionCourses = writtenEvaluation.getAssociatedExecutionCourses();        for (Vigilant vigilant : vigilants) {            if (vigilant.canBeConvokedForWrittenEvaluation(writtenEvaluation)                    && !incompatiblePersons.contains(vigilant.getIncompatiblePerson())) {                if (vigilant.getPerson().hasTeacher()) {                    Teacher teacher = vigilant.getPerson().getTeacher();                    /*                     * Let's take out the Cathedratic teachers Cathedratic                     * teachers have Weight of 1, 2 or 3                     *                      */                    if (teacher.getCategory().getWeight() > 3) {                        if (teacher.teachesAny(executionCourses)) {                            teachersThatTeachClass.add(vigilant);                        } else {                            vigilantSugestion.add(vigilant);                        }                        incompatiblePersons.add(vigilant.getPerson());                    }                } else {                    vigilantSugestion.add(vigilant);                    incompatiblePersons.add(vigilant.getPerson());                }            } else {                if (!vigilantIsAlreadyConvokedForThisExam(vigilant, writtenEvaluation)) {                    unavailableVigilants.add(vigilant);                }            }        }        // ComparatorChain comparator = new ComparatorChain();        // comparator.addComparator(new VigilantComparator(executionCourses));        // comparator.addComparator(new PointComparator());        Collections.sort(vigilantSugestion, new PointComparator());        Collections.sort(teachersThatTeachClass, new PointComparator());        return new StrategySugestion(teachersThatTeachClass, vigilantSugestion, unavailableVigilants);    }