anchor.diff:        begin
           if (ChildNodeInfo and NODEPTR_FLAG_ALLOCATED = 0) then
           begin
  -          // (parent:3, mask, parentmask, tile) + test
  +          // child node info (without heuristics data)
             ChildNodeInfo := ChildNodeInfo and Integer($ff00ff00);
             ParentBits := ParentBits or ChildNodeInfo;
  -          if (ParentBits and (ChildNodeInfo shl 8) = 0) then
  -            goto nextchild_continue;
  -
  -          // path
  +          if (ParentBits and (ChildNodeInfo shl 8) = 0) then goto nextchild_continue;
  +
  +          // child path
             TileWeights := Store.Info.TileWeights[ParentBits and 1];
  -          Path := TileWeights[NodeInfo shr 24] + TileWeights[ParentBits shr 24];
  -          if (Path > PATHLESS_TILE_WEIGHT) then
  -            goto nextchild_continue;
  +          Path := TileWeights[NodeInfo shr 24];
  +          Inc(Path, TileWeights[ParentBits shr 24]);
  +          if (Path > PATHLESS_TILE_WEIGHT) then goto nextchild_continue;
             Path := Store.Current.Path + (Path shr 1);
   
             // allocate new node
             ChildNode := Store.Info.NodeAllocator.NewNode;
  -
             {$ifdef LARGEINT}
               Cell.NodePtr := NativeUInt(NativeInt(ChildNode) + NODEPTR_MODIFIER);
             {$else}
  
positive.code:   TileWeights: PCardinalList;
    Path: Cardinal;
    NodeXY, OffsetXY, ChildXY: Cardinal;
    dX, dY, X, Y: NativeInt;
    Mask: NativeInt;
  
  //  ChildSortValue, ChildPath: Cardinal;
  //  Left, Right: PCPFNode;
  
  //  PBufferHigh, PBufferBase, PBufferCurrent: ^PCPFNode;
  
    Store: TFindPathLoopStore;(*record
      Buffer: TMapNodeBuffer;
  
negative.code: 
        PBufferCurrent := PBufferBase;
        Inc(PBufferBase);
      end;
  
      // insert sorted nodes
      // todo
  