anchor.diff:  
     // Step 9: c0 <- v0, c1 <- v1 - t1, c2 <- t2 - v0 - vinf, c3 <- t1 - t2, c4 <- vinf
     Shift := k * CLimbBits;
  -  // Note: The next line is slightly faster than AddWithOffset, but, more importantly,
  -  //       it produces the correct result, while AddWithOffset doesn't always do that (at least in Win32).
  +
     Result := (((((((vinf shl Shift) + t1 - t2) shl Shift) + t2 - v0 - vinf) shl Shift) + v1 - t1) shl Shift) + v0;
  -
     Result.FSize := (Result.FSize and SizeMask) or Sign;
   end;
   
  
positive.code:   k, LSign: Integer;
    z0, z1, z2: BigInteger;
    x, y: TArray<BigInteger>;
  begin
    if ((Left.FSize and SizeMask) < KaratsubaThreshold) or ((Right.FSize and SizeMask) < KaratsubaThreshold) then
    begin
  
negative.code:     class procedure DivTwoDigitsByOne(const Left, Right: BigInteger; N: Integer;
        var Quotient, Remainder: BigInteger); static;
  
      // Karatsuba and Toom-Cook helper function
      // Split BigInteger into smaller BigIntegers of size BlockSize.
      function Split(BlockSize, BlockCount: Integer): TArray<BigInteger>;
  
  