code: private List<Location> getAllSubLocations(Location location) {
  		List<Location> flatSubLocations = new ArrayList<Location>();
  		for (Location l : location.getSubLocations()) {
  			if (l.isComplex()) {
  				flatSubLocations.addAll(getAllSubLocations(l));
  			}
  			else {
  				flatSubLocations.add(l);
  			}
  		}
  		return flatSubLocations;
  	}
docs: Here to allow for recursion