anchor.diff:                  fun (c:char) (s:ParseState) ->
                       match c with
                           | x when x = settings.CharFieldDelim -> Field
  -                        | _ when segmentMatches (c :: s.Field) (settings.RowDelimChars) -> Row
  +                        | _ when settings.RowSegmentMatcher (c :: s.Field) (settings.RowDelimChars) -> Row
                           | _ -> NoMatch
               else
                   fun (c:char) (s:ParseState) -> 
                       match c with
                           | x when x = settings.FieldLast && 
  -                                segmentMatches (c :: s.Field) (settings.FieldDelimChars) -> Field
  +                                settings.FieldSegmentMatcher (c :: s.Field) (settings.FieldDelimChars) -> Field
                           | x when x = settings.RowLast ->
                               match (settings.RowFirstChar) with
  -                                | _ when segmentMatches (c :: s.Field) (settings.RowDelimChars) -> Row
  +                                | _ when settings.RowSegmentMatcher (c :: s.Field) (settings.RowDelimChars) -> Row
                                   | _ -> NoMatch
                           | _ -> NoMatch
   
  
positive.code:                 list1.Head = list2.[0]
              else
                  (comp (list1) (list2) 0 len)
  
          let delimiterMatcher = 
              if settings.IsSingleCharFieldDelim && settings.IsRowDelimNewline then
  
negative.code:         let fieldDelimChars = fieldDelim.ToCharArray()
          let isSingleCharFieldDelim = fieldDelimChars.Length = 1
          let charFieldDelim = fieldDelimChars.[0]
  
          let simpleMatch (list1:char list) (list2:char array) = 
              list1.Head = list2.[0]
  
          let segmentMatches (list1:char list) (list2:char array) = 
              let rec comp (l1:char list) (l2:char array) (idx:int) (max:int) = 
                  let next = idx + 1
                  match next with 
  