anchor.diff:  
   open System
   
  - 
   /// Represents the result of a computation.
   type Result<'TSuccess, 'TMessage> = 
       /// Represents the result of a successful computation.
  -    | Ok of 'TSuccess * 'TMessage list
  +    | Okay of 'TSuccess * 'TMessage list
       /// Represents the result of a failed computation.
       | Fail of 'TMessage list
   
  
positive.code:     let inline collect xs = 
          Seq.fold (fun result next -> 
              match result, next with
              | Ok(rs, m1), Ok(r, m2) -> Ok(r :: rs, m1 @ m2)
              | Ok(_, m1), Fail(m2) | Fail(m1), Ok(_, m2) -> Fail(m1 @ m2)
              | Fail(m1), Fail(m2) -> Fail(m1 @ m2)) (ok []) xs
          |> lift List.rev
  
  
negative.code:     [<Extension>]
      static member FailedWith(this:Result<'TSuccess, 'TMessage>) = 
          match this with
          | Okay(v,msgs) -> failwithf "Result was a success: %A - %s" v (String.Join(Environment.NewLine, msgs |> Seq.map (fun x -> x.ToString())))
          | Fail(msgs) -> msgs
  
      /// Returns the result or fails if the result was an error.
      [<Extension>]
      static member SucceededWith(this:Result<'TSuccess, 'TMessage>) : 'TSuccess = 
          match this with
          | Okay(v,msgs) -> v
          | Fail(msgs) -> failwithf "Result was an error: %s" (String.Join(Environment.NewLine, msgs |> Seq.map (fun x -> x.ToString())))