permute method

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

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