public static BigInteger operator +(BigInteger x, BigInteger y) {
if (object.ReferenceEquals(x, null)) {
throw new ArgumentNullException("x");
}
if (object.ReferenceEquals(y, null)) {
throw new ArgumentNullException("y");
}
if (x.sign == y.sign) {
return new BigInteger(x.sign, add0(x.data, x.Length, y.data, y.Length));
} else {
return x - new BigInteger(-y.sign, y.data); //??? performance issue
}
}