anchor.diff:            Right := ChildNode.Next;
             Left.Next := Right;
             Right.Prev := Left;
  -        end; *)
  +        end;  *)
         end;
   
         // add child node to buffer
  
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:       begin
          if (ChildNodeInfo and NODEPTR_FLAG_ALLOCATED = 0) then
          begin
            // 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;
  
            // child path
            TileWeights := Store.Info.TileWeights[ParentBits and 1];
            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}
  