private Set<Location> getPlayerFeatures(Player player, Class<? extends Feature> featureClass, boolean uncompletedOnly) {
Set<Location> locations = new HashSet<>();
for (Feature f : features) {
if (!featureClass.isInstance(f)) continue;
IsOccupied visitor = uncompletedOnly ? new IsOccupoedAndUncompleted() : new IsOccupied();
if (f.walk(visitor.with(player).with(Follower.class))) {
locations.add(f.getLocation());
}
}
return locations;