Is there a reason the Propagate class is marked final? This prevents defining custom constprop interpreters with different keys.