The hard inclusive upper bound, from Range/IntRange, or null.
double? get hardMax => constraint<Range>()?.max ?? constraint<IntRange>()?.max?.toDouble();