iiuc, we rely on pre_requires_consumer_type to make sure SubProductPools only go to consumers of the right type. Would it ever make sense for a SubPool (or a Pool in general) to have multiple requires_consumer_type attributes? ie "everything but hypervisors" or such. It looks like we currently fail the rules check if we hit any consumer type/pool.requires_consumer_type mismatch.