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) {
var previousWasEqual = false;
for (var value in byName.values) {
if (previousWasEqual) {
return value;
} else if (value == instance) {
previousWasEqual = true;
}
}
if (previousWasEqual) {
return byName.values.first;
}
return instance;
}