please try to keep your comments constructive... and correct.

this property is is necessary to justify things like the following:
var k1 = new Key(t, a);
var k2 = new Key(t, a);
// the following are true
identical(k1, k2);
k1.hashCode == k2.hashCode;
k1.id == k2.id;
new Set.from([k1, k2]).length == 1;
it also tells client code that they can call new rather freely without worrying that they are creating lots of little objects.