Based on a typed variant of Andy Gill's data-reify. After several
tries, I wasn't able to reuse data-reify or my typed variant of it.
The problem was that I need my HasType class and Type type, but I
couldn't parameterize data-reify by the classHasType.