### Question:
BaseUInt256Value implements UInt256Value<T> { @Override public T addMod(T value, UInt256 modulus) { return addMod(value.toUInt256(), modulus); } protected  BaseUInt256Value(UInt256 value, Function<UInt256, T> ctor); protected  BaseUInt256Value(long value, Function<UInt256, T> ctor); protected  BaseUInt256Value(BigInteger value, Function<UInt256, T> ctor); @Override T add(T value); T add(UInt256 value); @Override T add(long value); @Override T addMod(T value, UInt256 modulus); T addMod(UInt256 value, UInt256 modulus); @Override T addMod(long value, UInt256 modulus); @Override T addMod(long value, long modulus); @Override T subtract(T value); T subtract(UInt256 value); @Override T subtract(long value); @Override T multiply(T value); T multiply(UInt256 value); @Override T multiply(long value); @Override T multiplyMod(T value, UInt256 modulus); T multiplyMod(UInt256 value, UInt256 modulus); @Override T multiplyMod(long value, UInt256 modulus); @Override T multiplyMod(long value, long modulus); @Override T divide(T value); T divide(UInt256 value); @Override T divide(long value); @Override T pow(UInt256 exponent); @Override T pow(long exponent); @Override T mod(UInt256 modulus); @Override T mod(long modulus); @Override int compareTo(T other); int compareTo(UInt256 other); @Override boolean equals(Object obj); @Override int hashCode(); @Override String toString(); @Override UInt256 toUInt256(); @Override Bytes32 toBytes(); @Override Bytes toMinimalBytes();  }### Answer:
@Test void shouldThrowForAddModOfZero() { Throwable exception = assertThrows(ArithmeticException.class, () -> v(0).addMod(v(1), UInt256.ZERO)); assertEquals("addMod with zero modulus", exception.getMessage()); }
@Test void shouldThrowForAddModLongUInt256OfZero() { Throwable exception = assertThrows(ArithmeticException.class, () -> v(0).addMod(1, UInt256.ZERO)); assertEquals("addMod with zero modulus", exception.getMessage()); }
@Test void shouldThrowForAddModUInt256UInt256OfZero() { Throwable exception = assertThrows(ArithmeticException.class, () -> v(0).addMod(UInt256.ONE, UInt256.ZERO)); assertEquals("addMod with zero modulus", exception.getMessage()); }
@Test void shouldThrowForAddModLongLongOfZero() { Throwable exception = assertThrows(ArithmeticException.class, () -> v(0).addMod(1, 0)); assertEquals("addMod with zero modulus", exception.getMessage()); }
@Test void shouldThrowForAddModLongLongOfNegative() { Throwable exception = assertThrows(ArithmeticException.class, () -> v(0).addMod(1, -5)); assertEquals("addMod unsigned with negative modulus", exception.getMessage()); }