anchor.diff:              (sprintf "have length to %s" lengthMatcher.FailureMsgForShould) 
   
       let exactly no matcher =
  -        let f a = a |> Seq.filter (applyMatcher matcher (MatchResult.apply id)) |> Seq.length = no
  +        let f a = a |> Seq.filter (Matcher.IsMatch matcher) |> Seq.length = no
           let msg = 
               sprintf "contain exactly %d element to %s" no 
                   matcher.FailureMsgForShould
  
positive.code:     abstract member ApplyActual<'TResult> : (MatchResult -> 'TResult) -> 'TActual -> 'TResult
      abstract member FailureMsgForShould : string
      abstract member FailureMsgForShouldNot : string
  
  let applyMatcher<'T,'U> (matcher: Matcher<'T>) f (a : 'T) : 'U =
      matcher.ApplyActual f a
  
negative.code: 
  module have =
      let atLeastOneElement matcher =
          let f a = a |> Seq.exists (Matcher.IsMatch matcher)
          let msg = sprintf "contain at least one element to %s" matcher.FailureMsgForShould
          let notMsg = sprintf "contain no elements to %s" matcher.FailureMsgForShould
          createFullMatcher f msg notMsg
  