comparator.addComparator(new ReverseComparator(Vigilant.USERNAME_COMPARATOR));
comparator.addComparator(Vigilant.USERNAME_COMPARATOR);
	public StrategySugestion sugest(List<Vigilant> vigilants,			WrittenEvaluation writtenEvaluation) {		List<Vigilant> teachersSugestion = new ArrayList<Vigilant>();		List<Vigilant> vigilantSugestion = new ArrayList<Vigilant>();		Set<Person> incompatiblePersons = new HashSet<Person>();		List<UnavailableInformation> unavailableVigilants = new ArrayList<UnavailableInformation>();		if (writtenEvaluation.hasAnyVigilancys()) {			incompatiblePersons					.addAll(getIncompatiblePersons(writtenEvaluation));		}				final List<ExecutionCourse> executionCourses = writtenEvaluation.getAssociatedExecutionCourses();		Collections.sort(vigilants, new VigilantComparator(executionCourses));				for (Vigilant vigilant : vigilants) {			if (vigilant.canBeConvokedForWrittenEvaluation(writtenEvaluation)					&& !incompatiblePersons.contains(vigilant							.getIncompatiblePerson())) {					Teacher teacher = vigilant.getTeacher();					if(teacher!=null && teacher.teachesAny(executionCourses))  {						teachersSugestion.add(vigilant);						incompatiblePersons.add(vigilant.getPerson());					}					else {						vigilantSugestion.add(vigilant);					}								} else {				if (!vigilantIsAlreadyConvokedForThisExam(vigilant,						writtenEvaluation)) {					UnavailableTypes reason;					if (incompatiblePersons.contains(vigilant							.getIncompatiblePerson())) {						reason = UnavailableTypes.INCOMPATIBLE_PERSON;					} else {						reason = vigilant								.getWhyIsUnavailabeFor(writtenEvaluation);					}					unavailableVigilants.add(new UnavailableInformation(vigilant, reason));									}			}		}		 ComparatorChain comparator = new ComparatorChain();		 comparator.addComparator(new PointComparator());		 comparator.addComparator(Vigilant.CATEGORY_COMPARATOR);		 comparator.addComparator(new ReverseComparator(Vigilant.USERNAME_COMPARATOR));		 		 Collections.sort(vigilantSugestion, comparator);		 Collections.sort(teachersSugestion, comparator);		return new StrategySugestion(teachersSugestion, vigilantSugestion,				unavailableVigilants);	}