synchronized O init(final E e) {
        if (o != null) {
            return o;
        }
        O res = function.apply(e);
        o = res;
        return res;
    }
@Test
    public void testInit() {
        Function<String, String> function = Function.identity();
        FreshBeanHolder<String, String> freshBeanHolder = new FreshBeanHolder<>(function);
        freshBeanHolder.init("hello world");
        assertEquals("hello world", freshBeanHolder.init("hello"));
    }