anchor.diff:  
   module have =
       let atLeastOneElement matcher =
  -        let f a = a |> Seq.exists (applyMatcher matcher id)
  +        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
       
       let length matcher =
  -        let f a = a |> Seq.length |> applyMatcher matcher id
  +        let f a = a |> Seq.length |> applyMatcher matcher (MatchResult.apply id)
           let msg = sprintf "have length to %s" matcher.FailureMsgForShould
           createMatcher f msg
   
       let exactly no matcher =
  -        let f a = a |> Seq.filter (applyMatcher matcher id) |> Seq.length = no
  +        let f a = a |> Seq.filter (applyMatcher matcher (MatchResult.apply id)) |> Seq.length = no
           let msg = 
               sprintf "contain exactly %d element to %s" no 
                   matcher.FailureMsgForShould
  
positive.code:                 a ()
                  false
              with
              | e -> e.Message |> applyMatcher matcher id
          createMatcher f
              (sprintf "throw exception with message %s" matcher.FailureMsgForShould)
              
  
negative.code:         (f : 'T -> bool) 
          (shouldMsg : string) 
          (shouldNotMsg : string) =
      let wrapF = fun a -> 
          match f a with
          | true -> MatchSuccess (a :> obj)
          | false -> MatchFail (a :> obj)
      { new Matcher<'T> () with
          member __.ApplyActual g actual = wrapF actual |> g
          member __.FailureMsgForShould = shouldMsg
          member __.FailureMsgForShouldNot = shouldNotMsg
      }
  let createMatcher<'T> (f : 'T -> bool) (shouldMsg : string) =
      let wrapF = fun a -> 
          match f a with
          | true -> MatchSuccess (a :> obj)
          | false -> MatchFail (a :> obj)
      { new Matcher<'T> () with
          member __.ApplyActual g actual = wrapF actual |> g
          member __.FailureMsgForShould = shouldMsg
      }
  
  