public FEELFnResult<List<Object>> invoke(@ParameterName("list") List list) {
        if ( list == null ) {
            return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "list", "cannot be null"));
        }
        // spec requires us to return a new list
        final List<Object> result = new ArrayList<>( list );
        Collections.reverse( result );
        return FEELFnResult.ofResult( result );
    }
@Test
    void invokeListTypeHeterogenous() {
        FunctionTestUtil.assertResultList(
                reverseFunction.invoke(Arrays.asList(1, "test", BigDecimal.TEN, Collections.emptyList())),
                Arrays.asList(Collections.emptyList(), BigDecimal.TEN, "test", 1));

        FunctionTestUtil.assertResultList(
                reverseFunction.invoke(Arrays.asList(1, "test", BigDecimal.TEN, Arrays.asList(1, 2, 3))),
                Arrays.asList(Arrays.asList(1, 2, 3), BigDecimal.TEN, "test", 1));
    }