permute method
Generates another instance with some deterministic function.
The only exception is Kind.forNull (because it has no other instances).
Implementation
@override
T? permute(T? instance) {
if (instance == null) {
return elementKind.newInstance();
}
return elementKind.permute(instance);
}