static <T extends Type> String encodeDynamicArray(DynamicArray<T> value) {
        int size = value.getValue().size();
        String encodedLength = encode(new Uint(BigInteger.valueOf(size)));
        String valuesOffsets = encodeArrayValuesOffsets(value);
        String encodedValues = encodeArrayValues(value);

        StringBuilder result = new StringBuilder();
        result.append(encodedLength);
        result.append(valuesOffsets);
        result.append(encodedValues);
        return result.toString();
    }
@Test
    public void testDynamicStringsArray() {
        DynamicArray<Utf8String> array =
                new DynamicArray<>(
                        Utf8String.class,
                        new Utf8String("web3j"),
                        new Utf8String("arrays"),
                        new Utf8String("encoding"));

        assertEquals(
                ("0000000000000000000000000000000000000000000000000000000000000003"
                        + "0000000000000000000000000000000000000000000000000000000000000060"
                        + "00000000000000000000000000000000000000000000000000000000000000a0"
                        + "00000000000000000000000000000000000000000000000000000000000000e0"
                        + "0000000000000000000000000000000000000000000000000000000000000005"
                        + "776562336a000000000000000000000000000000000000000000000000000000"
                        + "0000000000000000000000000000000000000000000000000000000000000006"
                        + "6172726179730000000000000000000000000000000000000000000000000000"
                        + "0000000000000000000000000000000000000000000000000000000000000008"
                        + "656e636f64696e67000000000000000000000000000000000000000000000000"),
                TypeEncoder.encodeDynamicArray(array));
    }