We should list the implementations that are supported by auto-detection and the order in which they're considered. When creating a factory of a specific type we should also list the implementations that are supported without using reflection.