anchor.diff:             );
     end;
   
  +  TCPFStart = packed record
  +    XYDistance: Integer;
  +    Node: PCPFNode;
  +    {$ifNdef LARGEINT}
  +      __Align: Int64;
  +    {$endif}
  +    case Boolean of
  +      True: (KnownPathNode: PCPFNode; Distance: Double; X, Y: Word);
  +      False:(
  +        Length: NativeUInt;
  +        case Boolean of
  +          True: (DistanceAsInt64: Int64);
  +         False: (DistanceLowDword: Cardinal; DistanceHighDword, XY: Integer);
  +      );
  +  end;
  +  PCPFStart = ^TCPFStart;
  +
  +  TCPFExcluded = packed record
  +    Attainables: array[0..3] of TCPFPoint;
  +    Count: Cardinal; // 8 - flag unattainables, 4 - flag many attainables
  +    Coordinates: TCPFPoint;
  +    Node: PCPFNode;
  +    {$ifNdef LARGEINT}
  +      __Align: Integer;
  +    {$endif}
  +  end;
  +  PCPFExcluded = ^TCPFExcluded;
  +  PCPFExcludedList = ^TCPFExcludedList;
  +  TCPFExcludedList = array[0..High(Integer) div SizeOf(TCPFExcluded) - 1] of TCPFExcluded;
  +
     PCPFOffsets = ^TCPFOffsets;
     TCPFOffsets = array[0..7] of NativeInt;
   
  
positive.code:   next_current:
      Node := Store.Current.Node.Next;
    current_initialize:
      // cell
      NodeFlags{XY} := Cardinal(Node.Coordinates);
      Cardinal(Store.Current.Coordinates) := NodeFlags{XY};
      Cell := @Store.Info.CellArray[(NativeInt(NodeFlags) shr 16){X} + Store.Info.MapWidth * {Y}Word(NodeFlags)];
      Store.Current.Cell := Cell;
  
  
negative.code:           CellInfo := CellInfo + Format(', parent: %d', [Node.ParentAndFlags and 7]);
          end else
          begin
            if (N = @FNodes.HeuristedPool.First) then CellKind := CellKind + ' [heuristed]'
            else
            if (N = @FNodes.UnattainablePool.First) then CellKind := CellKind + ' [unattainable]'
  