anchor.diff:  
   [<CompilationRepresentation(CompilationRepresentationFlags.ModuleSuffix)>]
   module NonEmptyList =
  +  let cons head tail : NonEmptyList<_> = (head, tail)
  +  let singleton head : NonEmptyList<_> = (head, [])
  +  let append (xs: NonEmptyList<_>) (ys: NonEmptyList<_>) : NonEmptyList<_> =
  +    let x, xs = xs
  +    let y, ys = ys
  +    (x, (xs@(y::ys)))
     let iter action (list: NonEmptyList<'T>) =
       let head, tail = list
       action head
  
positive.code:   member __.Bind(x, f: 'T -> AssertionResult<_>) =
      match x with
      | (Success x, _) -> f x
      | (Failure (res1, rest1), UnitType) ->
        match f (Unchecked.defaultof<'T>) with
        | Success _ -> Failure (res1, rest1)
        | Failure (res2, rest2) -> Failure (res1, rest1@(res2::rest2))
      | (Failure xs, ValueType) -> Failure xs
    member __.Delay(f: unit -> AssertionResult<_>) = f
    member __.Run(f) = f ()
  
negative.code:  
  let inline checkWith returnValue expected actual =
    if expected = actual then Success returnValue
    else Failure (NonEmptyList.singleton (sprintf "Expect: %A\nActual: %A" expected actual))
  
  let failure msg = Failure (NonEmptyList.singleton msg)
  let success v = Success v
  
  let check expected actual = checkWith actual expected actual
  