public <U> ChainableFunction<F, U> then(Function<? super T, ? extends U> function) {
        return new ChainableFunction<F, U>() {
            @Override
            public U apply(F input) {
                return function.apply(ChainableFunction.this.apply(input));
            }
        };
    }
@Test
    public void then() {
        Integer result = parseInteger().then(plus(7)).apply("11");

        assertThat(result).as("parseInt('11') then adding 7").isEqualTo(18);
    }