anchor.diff:      procedure SetTile(const X, Y: Word; const Value: TPathMapTile);
       procedure SetSectorTest(const Value: Boolean);
       procedure SetUseCache(const Value: Boolean);
  -    function DoFindPath(MapSelf: Pointer; FinishNode: PPathMapNode): Boolean;
  +    function DoFindPath(MapSelf: Pointer; StartNode: PPathMapNode): PPathMapNode;
     {$ifdef CPFLIB}
     public
       procedure Destroy;
  
positive.code:   PPathMapNode = ^TPathMapNode;
    TPathMapNode = packed record
      SortValue: Cardinal; // path + heuristics to start point
      Path: Cardinal; // path from finish point to the cell
      Coordinates: TCPFPoint;
      Prev, Next: PPathMapNode;
      case Integer of
      0: (
           ParentAndFlags: Byte{Parent:3; WayDeltaId:2; Way:3};
           Mask: Byte;
           ParentMask: Byte;
           Tile: Byte;
         );
      1: (_: Byte; ParentBits: Word);
      2: (NodeInfo: Cardinal);
    end;
  
  
  
negative.code:         Break;
        end;
  
        // path of current --> child
        TileWeights := Store.Info.TileWeights[ChildNodeInfo and 1];
        Path := TileWeights[NodeInfo shr 24];
        Inc(Path, TileWeights[ChildNodeInfo shr 24]);
  
        // Path test
        // todo
  
        // from start point path
        Path := Store.Current.Path + (Path shr 1);
  
        // if node is exists
  