anchor.diff:          match a.ApplyActual id actual with
           | MatchSuccess x -> b.ApplyActual id (x :?> 'b)
           | x -> x
  -    createMatcher f (sprintf "%s %s" a.FailureMsgForShould b.FailureMsgForShould)+    createMatcher f (sprintf "%s %s" a.ExpectationMsgForShould b.ExpectationMsgForShould)
  
positive.code:         createCompoundMatcher
              lengthMatcher
              (fun a -> a |> Seq.length) 
              (sprintf "have length to %s" lengthMatcher.FailureMsgForShould) 
  
      let exactly no matcher =
          let f a = a |> Seq.filter (Matcher.IsMatch matcher) |> Seq.length = no
          let msg = 
              sprintf "contain exactly %d element to %s" no 
                  matcher.FailureMsgForShould
          createBoolMatcher f msg
  
  let fail =
  
negative.code:         (shouldNotMsg : string) =
      { new Matcher<'T> () with
          member __.ApplyActual g actual = f actual |> g
          member __.ExpectationMsgForShould = shouldMsg
          member __.ExpectationMsgForShouldNot = shouldNotMsg
      }
  
  let createMatcher<'T> (f : 'T -> MatchResult) (shouldMsg : string) =
  