class Result {

  @NonNull
  public T orGetFrom(@NonNull final Supplier<? extends T> supplier) {
    return value != null ? value : Preconditions.<T>checkNotNull(supplier.get());
  }

    Result(@Nullable final T value, @Nullable final Throwable failure);

}