Hash code is value based.
@override int get hashCode { int result = type.hashCode; result = 31 * result + val.hashCode; return result; }