persistentSupportlitedStudentsByApprovationRatio, getApprovationRatioTransformer);
splitedStudentsByApprovationRatio, getApprovationRatioTransformer);
    public ByteArrayOutputStream run(Integer[] entryGradeLimits, Integer[] approvationRatioLimits,            Integer[] arithmeticMeanLimits, Integer degreeCurricularPlanID) throws ExcepcaoPersistencia,            FileNotFoundException {                ExecutionYear currentExecutionYear = ExecutionYear.readCurrentExecutionYear();        List<Student> otherYearsStudents = new ArrayList<Student>();        List<Student> firstYearStudents = new ArrayList<Student>();        DegreeCurricularPlan degreeCurricularPlan = rootDomainObject.readDegreeCurricularPlanByOID(degreeCurricularPlanID);        List<StudentCurricularPlan> studentCurricularPlans = degreeCurricularPlan                .getStudentCurricularPlans();        for (StudentCurricularPlan studentCurricularPlan : studentCurricularPlans) {            if (studentCurricularPlan.getCurrentState() == StudentCurricularPlanState.ACTIVE) {                Student student = studentCurricularPlan.getStudent();                if (student.getRegistrationYear() == currentExecutionYear) {                    firstYearStudents.add(student);                } else {                    student.calculateApprovationRatioAndArithmeticMeanIfActive(currentExecutionYear);                    otherYearsStudents.add(student);                }            }        }        Arrays.sort(entryGradeLimits);        Arrays.sort(approvationRatioLimits);        Arrays.sort(arithmeticMeanLimits);        HashMap<Character, List<Student>> splitedStudentsByEntryGrade = persistentSupportlitStudentsByClassification(                entryGradeLimits, firstYearStudents, "entryGrade", getEntryGradeTransformer,                setEntryGradeClosure);        ByteArrayOutputStream entryGradeStream = studentsRenderer(splitedStudentsByEntryGrade,                getEntryGradeTransformer);        HashMap<Character, List<Student>> persistentSupportlitedStudentsByApprovationRatio = persistentSupportlitStudentsByClassification(                approvationRatioLimits, otherYearsStudents, "approvationRatio",                getApprovationRatioTransformer, setApprovationRatioClosure);        ByteArrayOutputStream approvationRatioStream = studentsRenderer(                persistentSupportlitedStudentsByApprovationRatio, getApprovationRatioTransformer);        HashMap<Character, List<Student>> splitedStudentsByArithmeticMean = persistentSupportlitStudentsByClassification(                arithmeticMeanLimits, otherYearsStudents, "arithmeticMean",                getArithmeticMeanTransformer, setArithmeticMeanClosure);        ByteArrayOutputStream arithmeticMeanStream = studentsRenderer(splitedStudentsByArithmeticMean,                getArithmeticMeanTransformer);        return zipResults(entryGradeStream, approvationRatioStream, arithmeticMeanStream);    }