Refactoring this to `TypeDefinition` may help understanding.