private List getInfoSiteEvaluationsHistory(IExecutionPeriod executionPeriodToTest, ICurricularCourse curricularCourse,
private List getInfoSiteEvaluationsHistory(final IExecutionPeriod executionPeriodToTest, ICurricularCourse curricularCourse,
    private List getInfoSiteEvaluationsHistory(IExecutionPeriod executionPeriodToTest, ICurricularCourse curricularCourse,            ISuportePersistente sp) throws ExcepcaoPersistencia {        List infoSiteEvaluationsHistory = new ArrayList();        List executionPeriods = (List) CollectionUtils.collect(curricularCourse                .getAssociatedExecutionCourses(), new Transformer() {            public Object transform(Object arg0) {                IExecutionCourse executionCourse = (IExecutionCourse) arg0;                return executionCourse.getExecutionPeriod();            }        });        // filter the executionPeriods by semester;        // also, information regarding execution years after the course's execution year must not be shown        final IExecutionPeriod historyExecutionPeriod = executionPeriodToTest;        executionPeriods = (List) CollectionUtils.select(executionPeriods, new Predicate() {            public boolean evaluate(Object arg0) {                IExecutionPeriod executionPeriod = (IExecutionPeriod) arg0;                return (executionPeriod.getSemester().equals(historyExecutionPeriod.getSemester()) && executionPeriod.getExecutionYear().getBeginDate().before(historyExecutionPeriod.getExecutionYear().getBeginDate()));            }        });        Collections.sort(executionPeriods, new Comparator() {            public int compare(Object o1, Object o2) {                IExecutionPeriod executionPeriod1 = (IExecutionPeriod) o1;                IExecutionPeriod executionPeriod2 = (IExecutionPeriod) o2;                return executionPeriod1.getExecutionYear().getYear().compareTo(                        executionPeriod2.getExecutionYear().getYear());            }        });        Iterator iter = executionPeriods.iterator();        while (iter.hasNext()) {            IExecutionPeriod executionPeriod = (IExecutionPeriod) iter.next();            InfoSiteEvaluationStatistics infoSiteEvaluationStatistics = new InfoSiteEvaluationStatistics();            //infoSiteEvaluationStatistics            //.setInfoExecutionPeriod((InfoExecutionPeriod) Cloner            //.get(executionPeriod));            infoSiteEvaluationStatistics.setInfoExecutionPeriod(InfoExecutionPeriodWithInfoExecutionYear                    .newInfoFromDomain(executionPeriod));            List enrolled = getEnrolled(executionPeriod, curricularCourse, sp);            infoSiteEvaluationStatistics.setEnrolled(new Integer(enrolled.size()));            infoSiteEvaluationStatistics.setEvaluated(getEvaluated(enrolled));            infoSiteEvaluationStatistics.setApproved(getApproved(enrolled));            infoSiteEvaluationsHistory.add(infoSiteEvaluationStatistics);        }        return infoSiteEvaluationsHistory;    }