anchor.diff:          {$ifdef LARGEINT}
             NodeAllocatorBuffers := Pointer(@Store.Info.NodeAllocator.Items);
             ChildNode := Pointer(
  -            (NodeAllocatorBuffers[ChildNodeInfo) shr LARGE_NODEPTR_OFFSET]) +
  +            (NodeAllocatorBuffers[ChildNodeInfo shr LARGE_NODEPTR_OFFSET]) +
               (ChildNodeInfo and NODEPTR_CLEAN_MASK) );
           {$else}
             ChildNode := Pointer(ChildNodeInfo and NODEPTR_CLEAN_MASK);
  
positive.code:           {$ifdef LARGEINT}
              NodeAllocatorBuffers := Pointer(@Store.Info.NodeAllocator.Items);
              ChildNode := Pointer(
                (NodeAllocatorBuffers[ChildNodeInfo) shr LARGE_NODEPTR_OFFSET]) +
                (ChildNodeInfo and NODEPTR_CLEAN_MASK) );
            {$else}
              ChildNode := Pointer(ChildNodeInfo and NODEPTR_CLEAN_MASK);
            {$endif}
  
            // child node info (without heuristics data)
            Child{NodeInfo} := ChildNode.NodeInfo and Integer($ff00ff00);
            ParentBits := ParentBits or Child{NodeInfo};
            if (ParentBits and (Child shl 8) = 0) then goto nextchild_continue;
  
  
negative.code:           Path := TileWeights[NodeInfo shr 24];
            Inc(Path, TileWeights[ParentBits shr 24]);
            if (Path > PATHLESS_TILE_WEIGHT) then goto nextchild_continue;
            Path := (Path shr 1) + Store.Current.Path;
  
            // heuristed flag
            {$ifdef CPUX86}
  