anchor.diff:              printfn "Last read is non-zero!"
               let result = downloader task
               countingTimer.Start()
  -            counter := !counter + NaiveSearch.countMatches result maxTemplateLength countingBound matchBound templateLengths prefix
  +            counter := !counter + countMatchesDetailed result maxTemplateLength countingBound matchBound templateLengths prefix matches
               countingTimer.Lap(label)
  +
  +        let hex = Array.map (fun (x : byte) -> System.String.Format("{0:X2} ", x)) templateArr
  +        let mutable start = 0
  +        for i in 0..(templates - 1) do
  +            let pattern = System.String.Concat(Array.sub hex start ((int) templateLengths.[i]))
  +            printfn "%A: %A matches found by %A" pattern matches.[i] label
  +            start <- start + (int) templateLengths.[i]
  +
  +        printfn ""
   
           ignore(Raw.CloseHandle(handle))
           readingTimer.Lap(label)
  
positive.code:         let mutable matchBound = 0
  
          let mutable task = null
  
          while (current < bound) && ((current = 0L) || (read > 0)) do
              if current > 0L then
  
negative.code:             if current > 0L then
                  let result = downloader task
                  countingTimer.Start()
                  counter := !counter + countMatchesDetailed result maxTemplateLength countingBound matchBound templateLengths prefix matches
                  countingTimer.Lap(label)
  
              if (read > 0) then
                  index <- index + 1
                  current <- current + (int64) read
  
                  if index = 50 then
                      printfn "I am %A and I've already read %A bytes!" label current
                      index <- 0
  
                  countingBound <- read
                  matchBound <- read
  