[WIP] Rewrite ByPropertyIdArray

This should replace `ByPropertyIdArray`. Just a draft for now, needs lots of testing to make sure it actually replicates the behaviour of the old version of the class. However, I'm already quite proud of using only half as much codes as the old implementation.