I do not get you on this point. Which one is nicer?
(1) Have two lists, perhaps all_* and user_*. The logic that finds a
strategy searches in two lists. The logic that checks if a given
strategy is built-in checks if it is on all_* list. (2) Have a single list, but add a boolean "unsigned is_builtin:1" to each
element of it. The logic that finds a strategy looks in this single
list. The logic that checks if a given strategy is built-in looks at
the strategy instance and it has the bit already.You seem to be advocating (1) but I do not understand why...