private HashSet<Integer> calcTargets(int start, int steps, HashSet<Integer> targets, HashSet<Integer> visited) {
		// This is our recursive function that creates the targets list.
		steps = steps - 1;
		visited.add(start);
		if(getCellAt(start).isDoorway()) {
			targets.add(start);
		} else if(steps == 0) {
			targets.add(start);
		} else {
			for(Integer adjCell : getAdjList(start)) {
				HashSet<Integer> visitedTemp = new HashSet<Integer>(visited);
				if(!visited.contains(adjCell)) {
					targets = calcTargets(adjCell, steps, targets, visitedTemp);
				}
			}
		}
		return targets;
	}