public static OffchainLookup build(byte[] bytes) {
        List<Type> resultList =
                FunctionReturnDecoder.decode(Numeric.toHexString(bytes), outputParameters);

        return new OffchainLookup(
                (Address) resultList.get(0),
                (DynamicArray<Utf8String>) resultList.get(1),
                (DynamicBytes) resultList.get(2),
                (Bytes4) resultList.get(3),
                (DynamicBytes) resultList.get(4));
    }
@Test
    void build() {
        OffchainLookup offchainLookup =
                OffchainLookup.build(Numeric.hexStringToByteArray(LOOKUP_HEX.substring(10)));

        assertNotNull(offchainLookup);
        assertEquals("0xc1735677a60884abbcf72295e88d47764beda282", offchainLookup.getSender());
        assertNotNull(offchainLookup.getUrls());
        assertEquals(1, offchainLookup.getUrls().size());
        assertEquals(
                "https://offchain-resolver-example.uc.r.appspot.com/{sender}/{data}.json",
                offchainLookup.getUrls().get(0));
        assertEquals(CALL_DATA, Numeric.toHexString(offchainLookup.getCallData()));
        assertEquals(EXTRA_DATA, Numeric.toHexString(offchainLookup.getExtraData()));
        assertEquals(CALLBACK_FUNC, Numeric.toHexString(offchainLookup.getCallbackFunction()));
    }