Ok, so I need to figure out the best way to have JITConfig setup where it is final and it just uses things that are CPU dependent or otherwise. There definitely needs to be some kind of normalization going on. Maybe just have the base JITConfig and then have a JITNormalizedConfig which can be used and setup by options. There will need to be options for the assembler, ABI things, the target OS, and otherwise. Maybe just a single unified configuration is far too complex. Maybe what I have instead is a base configuration, but where any options which are in subgroups such as jit.asm. which would handle the options for the assembler. Then the base setup like jit.asm will setup which assembler option thing to use. Then any options prefixed with jit.asm. will be passed to the assembler. If an option is not valid then a default will be returned if there is one specified, but there would never be a default generated by the base JITConfig.