<div dir="ltr"><div>Thanks for your answer.</div><div><br></div><div>> the most minimalistic type to
      model that would be a Supplier<T>.</div><div><br></div><div>Indeed. I mentioned Optional, but as the discussion goes, what could work instead of an Optional would be a constructor `Supplier.cache(Supplier<T> computer)` that would cache the computed value. That would be even better than Optional.</div><div><br></div><div>>  a stable value is also this "weird"
      mutable-only-once cell, which is effectively a safe wrapper around
      a JVM @Stable field.</div><div><br></div><div>OK, for that part, as I have no knowledge of how @Stable works, I fully trust you.</div><div><br></div><div>> a stable value is very much a mutable
      beast, so we need an API that is able to model this at-most-once
      mutation.  While in most cases the mutation is not really
      interesting (because clients are more interested in the laziness
      aspects)</div><div><br></div><div>Indeed, I admit that my comment was only built on the use-case of lazily initialized values; which seem to be only a corner case of StableValue's goal; and I agree that some more dedicated API to lazily initialized value (eg `Supplier.cache(Supplier<T> computer)` or `Optional.supplyNullable(Supplier<T> computer)` still could make sense independently of StableValue which has a slightly broader scope.</div><div><br></div><div>Thanks again.</div><div>Mickael</div></div>