anchor.diff:  ///                                                                                            ///
   /// https://stackoverflow.com/questions/4407839#16804098                                       ///
   //////////////////////////////////////////////////////////////////////////////////////////////////
  -class function BigInteger.Sqrt(const Radicand: BigInteger): BigInteger;
  +class function BigInteger.BaseCaseSqrt(const Radicand: BigInteger): BigInteger;
   var
     PrevEstimate, NewEstimate: BigInteger;
   begin
  
positive.code:       var Root, Remainder: BigInteger); static;
  
      /// <summary>Returns the square root R of Radicand, such that R^2 < Radicand < (R+1)^2</summary>
      class function Sqrt(const Radicand: BigInteger): BigInteger; static;
  
      /// <summary>If R is the square root of Radicand, returns Radicand - R^2.</summary>
      class procedure SqrtRemainder(const Radicand: BigInteger; var Root, Remainder: BigInteger); static;
  
      /// <summary>Returns the square of Value, i.e. Value*Value</summary>
  
negative.code:   case Index of
      0: Exit(BigInteger.Zero);
      1: Exit(Radicand);
      2: Exit(BaseCaseSqrt(Radicand));
    end;
    if Index < 0 then
      Error(ecNegativeExponent, ['NthRoot']);
  