anchor.diff:            Mask := 2*Byte(dY > 0) + (dY shr HIGH_NATIVE_BIT);
             Mask := Mask * 3;
             Mask := Mask + 2*Byte(dX > 0);
  -          Mask := Mask + (dX shr HIGH_NATIVE_BIT);
  +          Mask := Mask - 1 + (dX shr HIGH_NATIVE_BIT);
             ChildNode.NodeInfo := ChildNode.NodeInfo or Cardinal(Mask shl 3);
   
             // Y := Abs(dY)
  
positive.code:     // lock
      Node.ParentMask := 0;
  
      // todo next top?
  
      // child list
      ChildList := Pointer(NativeUInt(CHILD_ARRAYS_OFFSETS[NodeInfo and 63]));
  
negative.code:   next_current:
      Node := Store.Current.Node.Next;
    current_initialize:
      // cell
      NodeInfo{XY} := Cardinal(Node.Coordinates);
      Cardinal(Store.Current.Coordinates) := NodeInfo{XY};
      Cell := @Store.Info.CellArray[(NativeInt(NodeInfo) shr 16){X} + Store.Info.MapWidth * {Y}Word(NodeInfo)];
      Store.Current.Cell := Cell;
  
      // store pointer and path
      Store.Current.Node := Node;
      Store.Current.Path := Node.Path;
      ChildSortValue := Node.SortValue;
      Store.Current.SortValue := ChildSortValue;
  
      // node info
      NodeInfo := Cardinal(Node.NodeInfo);
  