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

        assertThat(result).as("Adding 7 after parseInt('11')").isEqualTo(18);
    }