This looks weird to me. I would return the different targets explicitly rather than relying on the fact that the base constraint defined PROPERTY by default. It would be clearer when reading it