However, this would break the fact that the `PrimitiveType` enum is also a `Type`, since enums cannot extend abstract classes.