That's a brilliant idea, completely agreed, Rowan! On the other note, don't want to nitpick here but I believe that it would be better to name the repeatable attribute simply as `<<Repeatable>>`. It would match other languages (such as Java) and the naming wouldn't be that verbose.
Also IMO, I think for consistency we should either use only parameters e. g. `<<Attribute(Attribute::TARGET_ALL, Attribute::REPEATABLE)>>` or separate attributes for both target validation and repeatability e. g. `<<Target(Target::ALL)>>` and `<<Repeatable>>`. Best regards, Benas Seliuginas