@This, TypeDefinition:

Is this used for user defined types? What actually constitutes as a user defined type, and do we actually need them? If so, we'll need some kind of global (or scoped? although that makes things more complicated) list of them.

Also, TypeDefinition would need to have more than just a single Type. If we're talking struct-like definitions that contain a collection of primitive types (ie. List<Type>).