### Question:
BytesSSZReader implements SSZReader { @Override public long readLong(int bitLength) { checkArgument(bitLength % 8 == 0, "bitLength must be a multiple of 8"); int byteLength = bitLength / 8; ensureBytes(byteLength, () -> "SSZ encoded data has insufficient length to read a " + bitLength + "-bit integer"); Bytes bytes = content.slice(index, byteLength); int zeroBytes = bytes.numberOfTrailingZeroBytes(); if ((byteLength - zeroBytes) > 8) { throw new InvalidSSZTypeException("decoded integer is too large for a long"); } index += byteLength; return bytes.slice(0, bytes.size() - zeroBytes).toLong(LITTLE_ENDIAN); } BytesSSZReader(Bytes content); @Override Bytes readBytes(int limit); @Override Bytes readFixedBytes(int byteLength, int limit); @Override int readInt(int bitLength); @Override long readLong(int bitLength); @Override BigInteger readBigInteger(int bitLength); @Override BigInteger readUnsignedBigInteger(int bitLength); @Override UInt256 readUInt256(); @Override UInt384 readUInt384(); @Override Bytes readAddress(); @Override Bytes readHash(int hashLength); @Override List<Bytes> readBytesList(int limit); @Override List<Bytes> readVector(long listSize, int limit); @Override List<Bytes> readFixedBytesVector(int listSize, int byteLength, int limit); @Override List<Bytes> readFixedBytesList(int byteLength, int limit); @Override List<String> readStringList(int limit); @Override List<Integer> readIntList(int bitLength); @Override List<Long> readLongIntList(int bitLength); @Override List<BigInteger> readBigIntegerList(int bitLength); @Override List<BigInteger> readUnsignedBigIntegerList(int bitLength); @Override List<UInt256> readUInt256List(); @Override List<UInt384> readUInt384List(); @Override List<Bytes> readAddressList(); @Override List<Bytes> readHashList(int hashLength); @Override List<Boolean> readBooleanList(); @Override boolean isComplete();  }### Answer:
@Test void shouldCorrectlyParseLongs() { Bytes bytes = fromHexString("7b00000000000000" + "ffffffffff7f0000"); AnotherObject readObject = SSZ.decode(bytes, r -> new AnotherObject(r.readLong(64), r.readLong(64))); assertEquals(123, readObject.number1); assertEquals(140737488355327L, readObject.number2); }