anchor.diff:          createFullMatcher f msg notMsg
       
       let length matcher =
  -        let f a = a |> Seq.length |> applyMatcher matcher (MatchResult.apply id)
  -        let msg = sprintf "have length to %s" matcher.FailureMsgForShould
  -        createMatcher f msg
  +        newCreateMatcher 
  +            (fun a -> a |> Seq.length |> applyMatcher matcher id)
  +            (sprintf "have length to %s" matcher.FailureMsgForShould) 
   
       let exactly no matcher =
           let f a = a |> Seq.filter (applyMatcher matcher (MatchResult.apply id)) |> Seq.length = no
  
positive.code:                 a ()
                  MatchFail "No exception thrown"
              with
              | e -> match e.Message |> applyMatcher matcher (MatchResult.apply id) with
                     | true -> MatchSuccess e.Message
                     | false -> MatchFail e.Message
          newCreateMatcher f
              (sprintf "throw exception with message %s" matcher.FailureMsgForShould)
              
  
negative.code:     abstract member FailureMsgForShould : string
      abstract member FailureMsgForShouldNot : string
  
  let applyMatcher<'T,'U> (matcher: Matcher<'T>) f (a : 'T) : 'U =
      matcher.ApplyActual f a
  
  let newCreateFullMatcher<'T> (f : 'T -> MatchResult) (shouldMsg : string) (shouldNotMsg : string) =
  