public List<Ingredient> getAllChildren(Ingredient c){
		Queue<Integer> childrenQueue = new ArrayDeque<Integer>();
		Map<Integer,Boolean> visited = new HashMap<Integer,Boolean>();
		List<Ingredient> result = new ArrayList<Ingredient>();
		List<Ingredient> children = getChildrenIngredients(c);
		for(Ingredient child : children){
			childrenQueue.add(child.getIngredientId());
		}
		while(!childrenQueue.isEmpty()){
			int childId = childrenQueue.remove();
			if(!visited.containsKey(childId) || !visited.get(childId)){
				Ingredient ingredient = getIngredient(childId);
				List<Ingredient> childChildren = getChildrenIngredients(ingredient);
				for(Ingredient childChild : childChildren){
					childrenQueue.add(childChild.getIngredientId());
				}
				result.add(ingredient);
				visited.put(childId, true);
			}
		}
		return result;
	}