anchor.diff:      abstract member ApplyActual<'TResult> : (MatchResult -> 'TResult) -> 'TActual -> 'TResult
       abstract member FailureMsgForShould : string
       abstract member FailureMsgForShouldNot : string
  +    static member IsMatch (matcher:Matcher<'TActual>) actual =
  +        matcher.ApplyActual (MatchResult.apply id) actual
   
   let applyMatcher<'T,'U> (matcher: Matcher<'T>) f (a : 'T) : 'U =
       matcher.ApplyActual f a
  
positive.code: 
  module have =
      let atLeastOneElement matcher =
          let f a = a |> Seq.exists (applyMatcher matcher (MatchResult.apply id))
          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
  
negative.code:             (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
  