Fix corner case bug with handling constants with unsigned ints
diff --git a/units/src/main/java/org/apache/tuweni/units/bigints/BaseUInt256Value.java b/units/src/main/java/org/apache/tuweni/units/bigints/BaseUInt256Value.java
index 490434d..f0bd282 100644
--- a/units/src/main/java/org/apache/tuweni/units/bigints/BaseUInt256Value.java
+++ b/units/src/main/java/org/apache/tuweni/units/bigints/BaseUInt256Value.java
@@ -198,6 +198,9 @@
     if (value.equals(UInt256.ONE)) {
       return copy();
     }
+    if (this.value.equals(UInt256.ONE)) {
+      return ctor.apply(value);
+    }
     return ctor.apply(this.value.multiply(value));
   }
 
@@ -209,6 +212,9 @@
     if (value == 1) {
       return copy();
     }
+    if (this.value.equals(UInt256.ONE)) {
+      return ctor.apply(UInt256.valueOf(value));
+    }
     return ctor.apply(this.value.multiply(value));
   }
 
diff --git a/units/src/main/java/org/apache/tuweni/units/bigints/UInt256.java b/units/src/main/java/org/apache/tuweni/units/bigints/UInt256.java
index eb0899f..4ade4ac 100644
--- a/units/src/main/java/org/apache/tuweni/units/bigints/UInt256.java
+++ b/units/src/main/java/org/apache/tuweni/units/bigints/UInt256.java
@@ -191,7 +191,7 @@
     result[INTS_SIZE - 2] = (int) (sum & LONG_MASK);
     constant &= result[INTS_SIZE - 2] == 0;
     long signExtent = (value >> 63) & LONG_MASK;
-    for (int i = INTS_SIZE - 3; i >= 0; --i) {
+    for (int i = INTS_SIZE - 2; i >= 0; --i) {
       sum = (this.ints[i] & LONG_MASK) + signExtent + (sum >>> 32);
       result[i] = (int) (sum & LONG_MASK);
       constant &= result[i] == 0;
@@ -295,7 +295,7 @@
     }
 
     boolean constant = true;
-    for (int i = INTS_SIZE; i < (INTS_SIZE + INTS_SIZE) - 2; ++i) {
+    for (int i = INTS_SIZE; i < (INTS_SIZE + INTS_SIZE) - 1; ++i) {
       constant &= (result[i] == 0);
     }
     if (constant && result[INTS_SIZE + INTS_SIZE - 1] >= 0 && result[INTS_SIZE + INTS_SIZE - 1] <= MAX_CONSTANT) {
diff --git a/units/src/test/java/org/apache/tuweni/units/bigints/BaseUInt256ValueTest.java b/units/src/test/java/org/apache/tuweni/units/bigints/BaseUInt256ValueTest.java
index bec3bb9..728785a 100644
--- a/units/src/test/java/org/apache/tuweni/units/bigints/BaseUInt256ValueTest.java
+++ b/units/src/test/java/org/apache/tuweni/units/bigints/BaseUInt256ValueTest.java
@@ -389,6 +389,7 @@
         Arguments.of(v(20), 1L, v(20)),
         Arguments.of(hv("0x0a0000000000"), 1L, hv("0x0a0000000000")),
         Arguments.of(v(1), 10995116277760L, hv("0x0a0000000000")),
+        Arguments.of(v(7), 1152921504606846976L, hv("0x07000000000000000")),
         Arguments.of(v(0), 2L, v(0)),
         Arguments.of(v(1), 2L, v(2)),
         Arguments.of(v(2), 2L, v(4)),