anchor.diff:  interface
   
   uses
  -  OtlComm, OtlTaskControl,
  +  OtlSync, OtlComm, OtlTaskControl,
     DelphiLens.Intf,
     DelphiLensUI.UIXStorage,
     DelphiLensUI.UIXEngine.Intf;
  
positive.code:   var navigate: boolean);
  var
    navigateTo: Nullable<TDLUIXLocation>;
    unitName  : string;
  begin
    //TODO: *** Needs a way to wait for the latest rescan to be processed. Requests must send command ID and ScanCompleted must return this command ID.
    //TODO: *** Also worker must not be rescanning while UI is shown as FScanResult refers to worker's data
    unitName := ExtractFileName(fileName);
    if SameText(ExtractFileExt(unitName), '.pas') then
      unitName := ChangeFileExt(unitName, '');
    DLUIShowUI(FUIXStorage, FScanResult, TDLUIXLocation.Create(fileName, unitName, line, column), navigateTo);
    navigate := navigateTo.HasValue;
    if navigate then
      FNavigationInfo := TDLUINavigationInfo.Create(navigateTo);
  
negative.code:     Exit;
  
    Task.ClearTimer(CTimerRescan);
  
    FScanLock.Acquire;
    try
      scanResult := FDelphiLens.Rescan;
    finally FScanLock.Release; end;
  
    Task.Invoke(
      procedure
  