public FEELFnResult<TemporalAccessor> invoke(@ParameterName("from") String val) {
        if ( val == null ) {
            return FEELFnResult.ofError(new InvalidParametersEvent(Severity.ERROR, "from", "cannot be null"));
        }
        try {
            TemporalAccessor parsed = FEEL_TIME.parse(val);

            if (parsed.query(TemporalQueries.offset()) != null) {
                // it is an offset-zoned time, so I can know for certain an OffsetTime
                OffsetTime asOffSetTime = parsed.query(OffsetTime::from);
                return FEELFnResult.ofResult(asOffSetTime);
            } else if (parsed.query(TemporalQueries.zone()) == null) {
                // if it does not contain any zone information at all, then I know for certain is a local time.
                LocalTime asLocalTime = parsed.query(LocalTime::from);
                return FEELFnResult.ofResult(asLocalTime);
            } else if (parsed.query(TemporalQueries.zone()) != null) {
                boolean hasSeconds = timeStringWithSeconds(val);
                LocalTime asLocalTime = parsed.query(LocalTime::from);
                ZoneId zoneId = parsed.query(TemporalQueries.zone());
                ZoneTime zoneTime = ZoneTime.of(asLocalTime, zoneId, hasSeconds);
                return FEELFnResult.ofResult(zoneTime);
            }
            return FEELFnResult.ofResult(parsed);
        } catch (DateTimeException e) {
            return manageDateTimeException(e, val);
        }
    }
@Test
    void invokeTimeUnitsParamsWithOffset() {
        FunctionTestUtil.assertResult(timeFunction.invoke(10, 43, 15, Duration.ofHours(1)), OffsetTime.of(10, 43, 15,
                                                                                                          0,
                                                                                                          ZoneOffset.ofHours(1)));
        FunctionTestUtil.assertResult(timeFunction.invoke(10, 43, 15, Duration.ofHours(-1)), OffsetTime.of(10, 43, 15
                , 0, ZoneOffset.ofHours(-1)));
    }