hashCode property
The same three fields firstDifference compares, because == delegates
to it — so a fourth field goes in BOTH places, not "both" of == and
firstDifference. And if firstDifference ever normalises its inputs, as
ActiveModelParams.firstDifference does, hash the normalised values too,
or two objects would compare equal with different hashes and break every
Map and Set holding them. This one is safe today only because it
normalises in the constructor instead.
Implementation
@override
int get hashCode => Object.hash(modelPath, tokenizerPath, activeBackend);