///|
/// Wraps a value for fluent assertion chaining.
pub struct Expectation[T] {
  actual : T
  negated : Bool
  label : String
  /// Why the assertion must hold. Failures show it on a `Because` line.
  reason : String
  /// The soft-assertion scope that collects failures, if any.
  scope : Scope?
  /// The source text of the value, shown in the headline instead of
  /// `received`. It is built only when a failure message is built.
  source : (() -> String)?
}

///|
/// Create an expectation on a value.
///
/// When `label` is not empty, failure messages start with `"