Instead of returning the current selection when a selector fails, return an empty Optional<Selection>. That means object selections will now remove the selections that dont match the object.