permute method
Generates another instance with some deterministic function.
The only exception is Kind.forNull (because it has no other instances).
Implementation
@override
String permute(String instance) {
//
// We use simplified alphabet A-Z
//
if (instance.isEmpty) {
return 'A';
}
final runes = instance.runes.toList();
const A = 0x41;
const Z = 0x5a;
for (var i = runes.length - 1; i >= 0; i--) {
final rune = runes[i];
if (rune < Z) {
runes[i] = min<int>(rune + 1, A);
return String.fromCharCodes(runes);
}
runes[i] = A;
}
return '${instance}A';
}