InfoProfessorship infoProfessorShip = InfoProfessorship.newInfoFromDomain(professorship);
InfoProfessorship infoProfessorShip = InfoProfessorshipWithInfoExecutionCourse .newInfoFromDomain(professorship);
    private List readDetailedProfessorships(ITeacher teacher, IExecutionPeriod executionPeriod,            ISuportePersistente sp) throws ExcepcaoPersistencia {        IPersistentProfessorship professorshipDAO = sp.getIPersistentProfessorship();        IPersistentResponsibleFor responsibleForDAO = sp.getIPersistentResponsibleFor();        List professorshipList = professorshipDAO.readByTeacherAndExecutionPeriod(teacher,                executionPeriod);        final List responsibleFors = responsibleForDAO.readByTeacher(teacher);        List detailedProfessorshipList = (List) CollectionUtils.collect(professorshipList,                new Transformer() {                    public Object transform(Object input) {                        IProfessorship professorship = (IProfessorship) input;                        InfoProfessorship infoProfessorShip = InfoProfessorship.newInfoFromDomain(professorship);                        DetailedProfessorship detailedProfessorship = new DetailedProfessorship();                        List executionCourseCurricularCoursesList = getInfoCurricularCourses(                                detailedProfessorship, professorship.getExecutionCourse());                        IResponsibleFor responsibleFor = new ResponsibleFor();                        responsibleFor.setExecutionCourse(professorship.getExecutionCourse());                        responsibleFor.setTeacher(professorship.getTeacher());                        detailedProfessorship.setResponsibleFor(Boolean.valueOf(responsibleFors                                .contains(responsibleFor)));                        detailedProfessorship.setInfoProfessorship(infoProfessorShip);                        detailedProfessorship                                .setExecutionCourseCurricularCoursesList(executionCourseCurricularCoursesList);                        return detailedProfessorship;                    }                    private List getInfoCurricularCourses(                            final DetailedProfessorship detailedProfessorship,                            IExecutionCourse executionCourse) {                        List infoCurricularCourses = (List) CollectionUtils.collect(executionCourse                                .getAssociatedCurricularCourses(), new Transformer() {                            public Object transform(Object input) {                                ICurricularCourse curricularCourse = (ICurricularCourse) input;                                InfoCurricularCourse infoCurricularCourse = Cloner                                        .copyCurricularCourse2InfoCurricularCourse(curricularCourse);                                if (curricularCourse.getDegreeCurricularPlan().getDegree()                                        .getTipoCurso().equals(TipoCurso.LICENCIATURA_OBJ)) {                                    detailedProfessorship.setMasterDegreeOnly(Boolean.FALSE);                                }                                return infoCurricularCourse;                            }                        });                        return infoCurricularCourses;                    }                });        return detailedProfessorshipList;    }