anchor.diff:      Searcher.FCopyFailedCount := 0;
       Searcher.FSourceDir := LazFileUtils.TrimFilename(SetDirSeparators(SourceDir));
       Searcher.FTargetDir := LazFileUtils.TrimFilename(SetDirSeparators(TargetDir));
  +    Searcher.FCopyAsHardlinks:= Assigned(pfnCreateHardLinkW);
   
       // Don't even try to copy to a subdirectory of SourceDir.
       B := TryCreateRelativePath(LazFileUtils.ExpandFilenameUtf8(Searcher.FSourceDir),
  
positive.code:   FTargetDir: string;
    FFlags: TCopyFileFlags;
    FCopyFailedCount: integer;
  protected
    procedure DoFileFound; override;
    procedure DoDirectoryFound; override;
  
negative.code: 
  implementation
  
  uses
    dynlibs;
  
  type
    TpfnCreateHardlinkW = function (lpFileName, lpExistingFileName: Pwidechar;
    lpSecurityAttributes: Pointer): LongBool; stdcall;
  var
    pfnCreateHardLinkW: TpfnCreateHardlinkW = nil;
  
  const
    FileCopyFlags = [cffPreserveTime];
  
  