anchor.diff:        Inc(NativeInt(Cell), Store.Info.CellOffsets[Child]);
   
         // parent bits
  -      Child := (Child shl 2) + (NodeInfo and 2) + (NativeUInt(Cardinal(Store.Current.Coordinates)) and 1);
  +      Child := Child shl 2;
  +      Child := Child + (NodeInfo and 2) + (NativeUInt(Cardinal(Store.Current.Coordinates)) and 1);
         ParentBits := PARENT_BITS[Child];
   
         // allocated new or use exists
  
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:         {$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);
  