permute method

  1. @override
String permute(
  1. String instance
)
override

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';
}