Rather than rolling our own. We need a little extra machinery to insert
the table entries, especially for the generic mapping support, but this
still saves 95 lines of code.
The `CONVERT_CAREFULLY' macro recently added will check that we haven't
messed things up too badly.