While this may end up with some duplicated code, it helps avoid accidentally generating code for a type that we didn't intend to. This will help in the future because we will get a linker error rather than wonky runtime behavior.