Program: 98885
Project: 98885
Buggy source:
@Override public ISubjectID[] getUserSubjects(UserRoles userRole,ITimePeriod timePeriod) throws AuthPelpException {
  ArrayList<SubjectID> subjects=new ArrayList<SubjectID>();
  if (userRole == null || userRole.compareTo(UserRoles.Student) == 0) {
    if (asignaturasMatriculadas == null) {
      asignaturasMatriculadas=getListaAsignaturasMatriculadas(null,null);
    }
  }
  if (userRole == null || userRole.compareTo(UserRoles.Teacher) == 0) {
    if (asignaturasConsultor == null) {
      asignaturasConsultor=getListaAsignaturasConsultor(null,null);
    }
  }
  if (userRole == null || userRole.compareTo(UserRoles.MainTeacher) == 0) {
    if (asignaturasPRA == null) {
      asignaturasPRA=getListaAsignaturasPRA(timePeriod,null);
    }
  }
  ITimePeriod[] semestres;
  if (timePeriod == null) {
    semestres=getActivePeriods();
  }
 else {
    semestres=new ITimePeriod[1];
    semestres[0]=timePeriod;
  }
  for (  ITimePeriod iTimePeriod : semestres) {
    Semester semester=(Semester)iTimePeriod;
    for (    AssignaturaMatriculadaDocenciaVO assignaturaMatriculadaDocencia : asignaturasMatriculadas) {
      AssignaturaReduidaVO asignatura;
      asignatura=(AssignaturaReduidaVO)assignaturaMatriculadaDocencia.getAssignatura();
      if (assignaturaMatriculadaDocencia.getAnyAcademic().equalsIgnoreCase(semester.getID())) {
        SubjectID subID=new SubjectID(asignatura.getCodAssignatura(),semester);
        subjects.add(subID);
      }
    }
    for (    AulaVO aula : asignaturasConsultor) {
      if (aula.getAnyAcademic().equalsIgnoreCase(semester.getID())) {
        SubjectID subID=new SubjectID(aula.getAssignatura().getCodAssignatura(),semester);
        subjects.add(subID);
      }
    }
    for (    AssignaturaReduidaVO asignatura : asignaturasPRA) {
      SubjectID subID=new SubjectID(asignatura.getCodAssignatura(),semester);
      subjects.add(subID);
    }
  }
  SubjectID[] subs=new SubjectID[subjects.size()];
  return subjects.toArray(subs);
}

Fixed version (ground truth):
@Override public ISubjectID[] getUserSubjects(UserRoles userRole,ITimePeriod timePeriod) throws AuthPelpException {
  ArrayList<SubjectID> subjects=new ArrayList<SubjectID>();
  if (userRole == null || userRole.compareTo(UserRoles.Student) == 0) {
    if (asignaturasMatriculadas == null) {
      asignaturasMatriculadas=getListaAsignaturasMatriculadas(timePeriod,null);
    }
  }
  if (userRole == null || userRole.compareTo(UserRoles.Teacher) == 0) {
    if (asignaturasConsultor == null) {
      asignaturasConsultor=getListaAsignaturasConsultor(timePeriod,null);
    }
  }
  if (userRole == null || userRole.compareTo(UserRoles.MainTeacher) == 0) {
    if (asignaturasPRA == null) {
      asignaturasPRA=getListaAsignaturasPRA(timePeriod,null);
    }
  }
  ITimePeriod[] semestres;
  if (timePeriod == null) {
    semestres=getActivePeriods();
  }
 else {
    semestres=new ITimePeriod[1];
    semestres[0]=timePeriod;
  }
  for (  ITimePeriod iTimePeriod : semestres) {
    Semester semester=(Semester)iTimePeriod;
    for (    AssignaturaMatriculadaDocenciaVO assignaturaMatriculadaDocencia : asignaturasMatriculadas) {
      AssignaturaReduidaVO asignatura;
      asignatura=(AssignaturaReduidaVO)assignaturaMatriculadaDocencia.getAssignatura();
      if (assignaturaMatriculadaDocencia.getAnyAcademic().equalsIgnoreCase(semester.getID())) {
        SubjectID subID=new SubjectID(asignatura.getCodAssignatura(),semester);
        subjects.add(subID);
      }
    }
    for (    AulaVO aula : asignaturasConsultor) {
      if (aula.getAnyAcademic().equalsIgnoreCase(semester.getID())) {
        SubjectID subID=new SubjectID(aula.getAssignatura().getCodAssignatura(),semester);
        subjects.add(subID);
      }
    }
    for (    AssignaturaReduidaVO asignatura : asignaturasPRA) {
      SubjectID subID=new SubjectID(asignatura.getCodAssignatura(),semester);
      subjects.add(subID);
    }
  }
  SubjectID[] subs=new SubjectID[subjects.size()];
  return subjects.toArray(subs);
}