anchor.diff:          MailboxProcessor.Start(fun inbox -> 
               let rec loop() = 
                   async { 
  -                    let! (jobId, indexWriter, request) = inbox.Receive()
  -                    performDuplicateDetection (jobId, indexWriter, request) |> ignore
  +                    let! (jobId, indexWriter, request, profileQuery) = inbox.Receive()
  +                    performDuplicateDetection (jobId, indexWriter, request, profileQuery) |> ignore
                       return! loop()
                   }
               loop())
  
positive.code:         if isNotBlank req.FileName then getFileDataSource (req)
          else getSearchQueryDataSource (req)
      
      let performDuplicateDetection (jobId, indexWriter : IndexWriter.T, req : DuplicateDetectionRequest) = 
          let session = 
              new Session(IndexName = req.IndexName, ProfileName = req.ProfileName, DisplayFieldName = req.DisplayName, 
                          JobStartTime = DateTime.Now, ThreadCount = req.ThreadCount, 
  
negative.code:                                  match (loopState.IsStopped, req.NextId.Value) with
                                   | (true, _) -> ()
                                   | (_, nextId) when nextId >= int64 req.DuplicatesCount -> loopState.Stop()
                                   | _ -> duplicateRecordCheck (req, record, session, profileQuery))
              |> ignore
          with :? AggregateException as e -> Logger.Log(e, MessageKeyword.Plugin, MessageLevel.Warning)
          // Update session record with job end time
  