public static List<Type> decode(String rawInput, List<TypeReference<Type>> outputParameters) {
        return decoder.decodeFunctionResult(rawInput, outputParameters);
    }
@Test
    public void testDynamicStructOfStaticStructReturn() throws ClassNotFoundException {
        String returnedData =
                "0x00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000000004746573740000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000047465737400000000000000000000000000000000000000000000000000000000";

        List<TypeReference<?>> myStruct2Types = new ArrayList<>();
        List<TypeReference<?>> myStructTypes = new ArrayList<>();

        myStruct2Types.add(TypeReference.makeTypeReference("uint256"));

        myStructTypes.add(TypeReference.makeTypeReference("uint256"));
        myStructTypes.add(TypeReference.makeTypeReference("string"));
        myStructTypes.add(TypeReference.makeTypeReference("string"));
        myStructTypes.add(new TypeReference<StaticStruct>(false, myStruct2Types) {});

        TypeReference<DynamicStruct> dynamicStruct =
                new TypeReference<DynamicStruct>(false, myStructTypes) {};

        List<Type> decodedData =
                FunctionReturnDecoder.decode(
                        returnedData, Utils.convert(Arrays.asList(dynamicStruct)));

        List<Type> decodedStruct = ((DynamicStruct) decodedData.get(0)).getValue();

        assertEquals(decodedStruct.get(0).getValue(), BigInteger.valueOf(1));
        assertEquals(decodedStruct.get(1).getValue(), "test");
        assertEquals(decodedStruct.get(2).getValue(), "test");

        List<Type> innerStructData = ((StaticStruct) decodedStruct.get(3)).getValue();

        assertEquals(innerStructData.get(0).getValue(), BigInteger.valueOf(1));
    }