@Override public boolean visit(Feature feature) { Meeple m = feature.getMeeple(); if (m == null || m.getPlayer() != player) { return true; } if (m instanceof Builder || m instanceof Pig) { toRemove = (Special) m; return true; } if (m instanceof Follower) { // another follower exists toRemove = null; return false; } return true; // some special case like Barn }