Builds from a plain Dart int, accepting negative values by taking
their two's-complement bit pattern (masked to 256 bits) instead of
throwing like Uint256.new does — e.g. Uint256.from(-1) == Uint256.max. value must itself be a normal double-safe Dart int
(|value| <= 2^53); BigInt-free, same limb-splitting negation trick
as Uint64.from, sign-extended into the three high limbs.
Only safe if the top three limbs are zero and the low limb is
double-safe — delegates to Uint64.toInt()'s own guard, throwing
IntegerError otherwise (use toBigInt for the general case).
Multiply, keeping only the low 256 bits (wrapping). Row-scanning
(operand-scanning) schoolbook multiply: for each limb a[i] of
this, walk every limb b[j] of other and accumulate
a[i]*b[j] into acc[i+j], threading carry from acc[i+j] to
acc[i+j+1] via Uint64.mac — the same single-carry-chain pattern
Uint64.operator* itself uses one level down (multiply one operand
by a single digit of the other, adding into a result array with
carry propagating to the next position).
Logical left shift, generalized across limb boundaries. Every step
is a plain Uint64 shift/bitwise op — already proven web-safe in
Uint64 itself — so no additional safety trick is needed at this
width.