private List<AmountInfoType> recurseTree( AwardHierarchy branchNode, List<AmountInfoType> amountInfoTypes) { Map<String, Object> criteria = ServiceHelper.getInstance() .buildCriteriaMap( new String[] {"parentAwardNumber", "active"}, new Object[] {branchNode.getAwardNumber(), Boolean.TRUE}); Collection c = businessObjectService.findMatchingOrderBy( AwardHierarchy.class, criteria, AwardHierarchy.UNIQUE_IDENTIFIER_FIELD, true); branchNode.setChildren(new ArrayList<AwardHierarchy>(c)); if (branchNode.hasChildren()) { for (AwardHierarchy childNode : branchNode.getChildren()) { org.kuali.kra.award.home.AwardAmountInfo awardAmount = childNode.getAward().getLastAwardAmountInfo(); amountInfoTypes.add(setAwardAmountInfo(childNode.getAward(), awardAmount)); childNode.setParent(branchNode); childNode.setRoot(branchNode.getRoot()); recurseTree(childNode, amountInfoTypes); } } return amountInfoTypes; }