anchor.diff:  
   // By default, uses FBase as numeric base, otherwise, if string "starts" with $, 0x, 0b or 0o, uses
   // 16, 16 (both hex), 2 (binary) and 8 (octal) respectively.
  -class function BigInteger.TryParse(const S: string; out Value: BigInteger): Boolean;
  +class function BigInteger.TryParse(const S: string; var Value: BigInteger): Boolean;
   var
     LTrimmed: string;
     LIsNegative: Boolean;
  
positive.code:   if Shift > 0 then
    begin
      for I := RSize - 1 downto 1 do
        NormDivisor[I] := (PDivisor[I] shl Shift) or (PDivisor[I - 1] shr RevShift);
      NormDivisor[0] := PDivisor[0] shl Shift;
  
      NormDividend[LSize] := PDividend[LSize - 1] shr RevShift;
      for I := LSize - 1 downto 1 do
        NormDividend[I] := (PDividend[I] shl Shift) or (PDividend[I - 1] shr RevShift);
      NormDividend[0] := PDividend[0] shl Shift;
    end
    else
    begin
  
negative.code:   LSign := Left.FSize and SignMask;
    RSign := Right.FSize and SignMask;
    ResSize := IntMax(LSize, RSize) + 1;
    AllocNewMagnitude(ResData, ResSize);
  
    if LSign = RSign then
    begin
  