Uint128 mulChecked(Uint128 other) { if (isZero || other.isZero) return Uint128.zero; final r = this * other; if (r ~/ other != this) throw IntegerError.overflow; return r; }