permute method
Generates another instance with some deterministic function.
The only exception is Kind.forNull (because it has no other instances).
Implementation
@override
(T0, T1) permute((T0, T1) instance) {
return (kind0.permute(instance.$1), kind1.permute(instance.$2));
}