src/main/java/com/greghaskins/spectrum/dsl/specification/Specification.java
/**
   * A value that will be fresh within each spec and cannot bleed across specs.
   *
   * <p>
   * Note that {@code let} is lazy-evaluated: the {@code supplier} is not called until the first
   * time it is used.
   * </p>
   *
   * @param <T>      The type of value
   * @param supplier {@link ThrowingSupplier} function that either generates the value, or throws a
   *                 {@link Throwable}
   * @return supplier which is refreshed for each spec's context
   */
A value that will be fresh within each spec and cannot bleed across specs.

Note that  let is lazy-evaluated: the  supplier is not called until the first
time it is used.

@param       The type of value
@param supplier  ThrowingSupplier function that either generates the value, or throws a
Throwable
@return supplier which is refreshed for each spec's context
A value that will be fresh within each spec and cannot bleed across specs . Note that let is lazy - evaluated : the supplier is not called until the first time it is used . @param The type of value @param supplier ThrowingSupplier function that either generates the value or throws a Throwable @return supplier which is refreshed for each spec ' s context
static <T> Supplier<T> let(final ThrowingSupplier<T> supplier) {
    LetHook<T> letHook = new LetHook<>(supplier);
    DeclarationState.instance().addHook(letHook, AppliesTo.ATOMIC_ONLY, Precedence.LOCAL);
    return letHook;
  }
static < T > Supplier < T > let ( final ThrowingSupplier < T > supplier ) { LetHook < T > letHook = new LetHook < > ( supplier ) ; DeclarationState . instance ( ) . addHook ( letHook , AppliesTo . ATOMIC_ONLY , Precedence . LOCAL ) ; return letHook ; }
A value that will be fresh within each spec and cannot bleed across specs.
A value that will be fresh within each spec and cannot bleed across specs .