in serde-generate/runtime/java/com/novi/serde/BinarySerializer.java [79:96]
public void serialize_u128(@Unsigned @Int128 BigInteger value) throws SerializationError {
if (value.compareTo(BigInteger.ZERO) < 0 || !value.shiftRight(128).equals(BigInteger.ZERO)) {
throw new java.lang.IllegalArgumentException("Invalid value for an unsigned int128");
}
byte[] content = value.toByteArray();
// BigInteger.toByteArray() may add a most-significant zero
// byte for signing purpose: ignore it.
assert content.length <= 16 || content[0] == 0;
int len = Math.min(content.length, 16);
// Write content in little-endian order.
for (int i = 0; i < len; i++) {
output.write(content[content.length - 1 - i]);
}
// Complete with zeros if needed.
for (int i = len; i < 16; i++) {
output.write(0);
}
}