### Question:
Lazy implements Callable<T>, Monad<T>, Functor<T>, Function<Consumer<T>, Lazy<T>> { public static <T, P> Lazy<T> defer(Function<P, T> delayedInitializer, P parameter) { return new Lazy<>(Curry.toCallable(delayedInitializer, parameter)); } Lazy(Callable<T> delayedAction); static Lazy<T> defer(Function<P, T> delayedInitializer, P parameter); @Override R flatMap(Function<T, R> flatMapper); @Override T call(); Lazy<R> map(final Function<T, R> mapper); static Lazy<T> defer(Callable<T> delayedInitializer); @Override Lazy<T> apply(final Consumer<T> lazyAction);  }### Answer:
@Test public void deferWithCallableThenAssignCallableVariableOnly() { Lazy<Boolean> lazyBoolean = Lazy.defer(new Callable<Boolean>() { @Override public Boolean call() throws Exception { return true; } }); assertTrue(lazyBoolean.delayedAction != null && lazyBoolean.item == null); }