any() `self.^parent` instead of looping

Also allows for early breakage out of the loop (`last` as soon as one matched)