anchor.diff:              loop 0 0UL
   
   
  +        ///updates an existing hashvalue 
           let inline updateHash pLength hs inchar outchar =
               let z = (rotateLeft pLength (uint64 outchar)) 
               (rotateLeft 1 hs) ^^^ z ^^^ (uint64 inchar)
   
  -        
  +
  +        ///find all matches of a query pattern in a source   
           let inline findAll (pattern : array<'a>) (s : array<'a>) = 
               findAllGeneric (updateHash pattern.Length) (blockHash) pattern s 
           
   
  +        ///find the first match of a query pattern in a source starting from a specific position in the source
           let inline findFrom (startPos:int) (pattern : array<'a>) (s : array<'a>) =
               findFromGeneric startPos (updateHash pattern.Length) (blockHash) pattern s 
   
   
  +        ///find the first match of a query pattern in a source
           let inline find (pattern : array<'a>) (s : array<'a>) =
               findFrom 0 pattern s
       
  -
  +///A collection of Knuth-Morris-Pratt string matching algorithms
   module KnuthMorrisPratt = 
   
  +    ///creates a prefix table for a query pattern
       let createPrefixTable (pattern : array<'a>) =
           let prefixTable = Array.zeroCreate pattern.Length
   
  
positive.code:             else 
                  true
          if startPos+pattern.Length > s.Length then false else loop 0
      
  
      let inline findAllGeneric (updateHash : 'c -> 'a -> 'a -> 'c when 'c : unmanaged) (blockHash : 'a array -> 'c when 'c: unmanaged) (pattern : array<'a>) (s : array<'a>) = 
          let m,n = pattern.Length,s.Length
          if m < n && n > 0 then 
  
negative.code:         else []
  
  
      ///takes an updateHash and blockHash function to find the first match of a query pattern in a source starting from a specific position in the source
      let findFromGeneric (startPos:int) (updateHash : 'c -> 'a -> 'a -> 'c when 'c : unmanaged) (blockHash : 'a array -> 'c when 'c: unmanaged) (pattern : array<'a>) (text : array<'a>) = 
          let m,n = pattern.Length,text.Length
          if m < n && n > 0 then 
  