private List<List<AffiliationVO>> getPaths(List<AffiliationVO> currentPath) throws Exception {

    List<List<AffiliationVO>> result = new ArrayList<List<AffiliationVO>>();
    AffiliationVO affiliationVO = currentPath.get(currentPath.size() - 1);
    if (affiliationVO.getParentAffiliations().isEmpty()) {
      result.add(currentPath);
    } else {
      for (AffiliationRO parent : affiliationVO.getParentAffiliations()) {
        List<AffiliationVO> list = new ArrayList<AffiliationVO>();
        list.addAll(currentPath);
        AffiliationVO parentVO = getAffiliation(parent);
        list.add(parentVO);
        result.addAll(getPaths(list));
      }
    }
    return result;
  }