code: public static <T> ComposableFuture<T> buildLazy(final Producer<T> producer) {
      return LazyComposableFuture.build(producer);
    }
docs: builds a lazy future from a producer. the producer itself is cached
  and used afresh on every consumption.
  
  @param producer the result producer
  @param <T>      the future type
  @return the future