This allows for various type selection algorithms to be implemented. See tests / accept / compile / ttypeselectors.nim for examples.