anchor.diff:        }
       }
       var u_digits = _cloneDigits(x_digits, 0, x_used, m_len);
  -    var v_digits = _cloneDigits(y_digits, 0, y_used, m_len);
  +    var v_digits = _cloneDigits(y_digits, 0, y_used, m_len + 2);  // +2 for lsh.
       final bool ac = (x_digits[0] & 1) == 0;
   
       // Variables a, b, c, and d require one more digit.
  
positive.code:       if (i == 0) break;
      }
      if (!inv) {
        // TODO(regis): Make this work correctly:
        // if (s > 0) {
        //   m_used = _dlShiftDigits(v_digits, m_used, s, v_digits);
        // }
        return new _Bigint(false, m_used, v_digits)._toValidInt() << s;
      }
      // No inverse if v != 1.
      var i = m_used - 1;
  
negative.code:       return _dlShift(ds);
      }
      var r_used = _used + ds + 1;
      var r_digits = new Uint32List(r_used + 2 - (r_used & 1));  // for 64-bit.
      _lsh(_digits, _used, n, r_digits);
      return new _Bigint(_neg, r_used, r_digits);
    }
  