anchor.diff:    FLAG_SECTORS = (1 shl 4);
     FLAG_EXCLUDED = (1 shl 5);
     FLAG_WEIGHTS = (1 shl 6);
  +  FLAG_HEURISTICS = (1 shl 7);
   
     CHANGED_FINISH_INTERVAL = 8;
   label
  -  path_found, path_not_found, fill_result;
  +  weights_flags, path_found, path_not_found, fill_result;
   var
     i: NativeUInt;
     MapWidth, MapHeight: Cardinal;
  
positive.code:   FActualInfo.FoundPath.Distance := 0;
    if (FinishSector = SECTOR_PATHLESS) then goto fill_result;
  
    // initialize excluded points
    if (Flags and (FLAG_EXCLUDED or FLAG_CLEAN) <> 0) then
    begin
      // Excluded.NodeList
      // todo
  
      S := Params.Excludes;
      for i := Params.ExcludesCount downto 1 do
      begin
        Node := AllocateHeuristedNode(S.X, S.Y);
        Node.ParentMask := 0{locked flag};
  
        Inc(S);
      end;
    end;
  
    // finish point node
  
negative.code:   FoundPaths: NativeUInt;
    StartPoint, BestStartPoint: PCPFStart;
    FailureNode: TCPFNode;
    Node, N: PCPFNode;
    FinishNode: PCPFNode;
  
    {$ifdef CPUX86}
  