Types can be given as literals.
The validation of a type should include checking for the existence of a Z4K1, and whether the value of the Z4K1 is indeed equal to the literal itself.
This basically ensures that a Z4 always have to be (the result of) a reference or a function call.