Z22 -> { 'Z1K1': 'Z7', 'Z7K1': 'Z10022', 'Z22K1': 'Z1', 'Z22K2': 'Z1' }
And Z10022 should be a type parametrized by types, returning a Z4.
In this way, the existing syntax ( { 'Z1K1': 'Z22', 'Z22K1': <Z1>, 'Z22K2': <Z1> } ) will continue to work.
Let's do likewise with Z10.