This type implements maps where the keys are themselves
complex structured data. For example, the keys may be
the abstract syntax trees for a programming language.
The map is implemented as a trie, so common parts of the
keys will be shared in the representation. The library
provides a generic implementation of the data structure,
so values of types that have support for Generic may
be automatically used as keys in the map.