anchor.diff:      let offset = 0L
       let bound = 280L*1024L*1024L*1024L
   
  -    let testAlgorithm initializer getter label counter =
  -        readingTimer.Start()
  -        let mutable read = 0
  -        let mutable lowBound = 0
  -        let mutable highBound = 0
  -
  -        let mutable current = 0L
  -
  -        let handle = Raw.CreateFile(index)
  -
  -        let prefix, next, leaf, _ = Helpers.buildSyntaxTree templates (int maxTemplateLength) templateLengths templateArr
  -
  -        initializer next leaf
  -
  -        while (current < bound) && ((current = 0L) || (read > 0)) do
  -            if current > 0L then
  -                current <- current - 512L
  -
  -            highBound <- (if (int64) length < bound - current then length else (int) (bound - current))
  -            read <- Raw.ReadFile(handle, buffer, highBound, offset + current)
  -            
  -            if (read > 0) then
  -                current <- current + (int64) read
  -
  -                let mutable countingBound = read + lowBound
  -                let mutable matchBound = read + lowBound
  -                if current < bound then
  -                    countingBound <- countingBound - 512
  -
  -                let result = getter()
  -
  -                countingTimer.Start()
  -                counter := !counter + Helpers.countMatches result (int maxTemplateLength) countingBound matchBound templateLengths prefix
  -                countingTimer.Lap(label)
  -    
  -        ignore(Raw.CloseHandle(handle))
  -        readingTimer.Lap(label)
  -
       let testAlgorithmAsync initializer uploader downloader label counter close =
           readingTimer.Start()
           let mutable read = 0
  
positive.code: 
          ignore(Raw.CloseHandle(handle))
          readingTimer.Lap(label)
          close()
  
      let cpuInitilizer = (fun _ _ -> ())
      let cpuHashedInitilizer = (fun _ _ -> ())
  
      let gpuInitilizer = (fun _ _ -> NaiveSearchGpu.initialize length k localWorkSize templates templateLengths buffer templateArr)
      let gpuHashingInitilizer = (fun _ _ -> NaiveHashingSearchGpu.initialize length maxTemplateLength k localWorkSize templates templatesSum templateLengths buffer templateArr)
  
negative.code:             if current > 0L then
                  current <- current - 512L
  
              highBound <- (if int64 length < bound - current then length else (int) (bound - current))
              read <- Raw.ReadFile(handle, buffer, highBound, offset + current)
  
              if read <= 0 && current = 0L then
  