return (InfoExecutionDegree) Cloner.get(executionDegree);
return InfoExecutionDegree.newInfoFromDomain(executionDegree);
    private InfoExecutionDegree selectExecutionDegree(ISuportePersistente sp,            List infoExecutionDegreeList, Integer executionDegreeIdChosen, IStudent student,            TipoCurso degreeType) throws ExcepcaoPersistencia {        InfoExecutionDegree infoExecutionDegree = null;        //read the execution degree chosen        if (executionDegreeIdChosen != null) {            IPersistentExecutionDegree persistentExecutionDegree = sp.getIPersistentExecutionDegree();            IExecutionDegree executionDegree = (IExecutionDegree) persistentExecutionDegree.readByOID(                    ExecutionDegree.class, executionDegreeIdChosen);            if (executionDegree != null) {                return (InfoExecutionDegree) Cloner.get(executionDegree);            }        }        //read the execution degree belongs to student        IPersistentStudentCurricularPlan persistentCurricularPlan = sp                .getIStudentCurricularPlanPersistente();        IStudentCurricularPlan studentCurricularPlan = persistentCurricularPlan                .readActiveByStudentNumberAndDegreeType(student.getNumber(), degreeType);        //execution degree isn't find, then it is chosen the list's first        if (studentCurricularPlan == null || studentCurricularPlan.getDegreeCurricularPlan() == null                || studentCurricularPlan.getDegreeCurricularPlan().getDegree() == null                || studentCurricularPlan.getDegreeCurricularPlan().getDegree().getNome() == null) {            return (InfoExecutionDegree) infoExecutionDegreeList.get(0);        }                final Integer degreeCurricularPlanCode = studentCurricularPlan.getDegreeCurricularPlan().getIdInternal();                List infoExecutionDegreeListWithDegreeCode = (List) CollectionUtils.select(                infoExecutionDegreeList, new Predicate() {                    public boolean evaluate(Object input) {                        InfoExecutionDegree infoExecutionDegree = (InfoExecutionDegree) input;                        return infoExecutionDegree.getInfoDegreeCurricularPlan().getIdInternal().equals(degreeCurricularPlanCode);                    }                });        if (!infoExecutionDegreeListWithDegreeCode.isEmpty()) {            infoExecutionDegree = (InfoExecutionDegree) infoExecutionDegreeListWithDegreeCode.get(0);        } else {            return (InfoExecutionDegree) infoExecutionDegreeList.get(0);        }        return infoExecutionDegree;    }