anchor.diff:  begin
     // release nodes
     Self.ReleaseAllocatedNodes(False);
  -  Self.FNodes.Heuristed.First.Next := @Self.FNodes.Heuristed.Last;
  -  Self.FNodes.Heuristed.Last.Prev := @Self.FNodes.Heuristed.First;
  +  Self.FNodes.HeuristedPool.First.Next := @Self.FNodes.HeuristedPool.Last;
  +  Self.FNodes.HeuristedPool.Last.Prev := @Self.FNodes.HeuristedPool.First;
     Self.FActualInfo.FinishPoint.X := -1;
     Self.FActualInfo.FinishPoint.Y := -1;
   
  
positive.code:   Coordinates, MapWidth: NativeInt;
  begin
    // take node list
    Node := FNodes.Heuristed.First.Next;
    if (Node = @FNodes.Heuristed.Last) then Exit;
    FNodes.Heuristed.First.Next := @FNodes.Heuristed.Last;
    FNodes.Heuristed.Last.Prev := @FNodes.Heuristed.First;
  
    // clear flag loop
    Cells := FInfo.CellArray;
  
negative.code:     function ActualizeStarts(Points: PPoint; Count: NativeUInt; Compare: Boolean): Boolean;
      function ActualizeExcludes(Points: PPoint; Count: NativeUInt; Compare: Boolean): Boolean;
      procedure ActualizeSectors;
      procedure FlushHeuristedNodes(const StartPoint: TCPFStart; const FailureNode: TCPFNode);
      procedure AddHeuristedNodes(const First, Last: PCPFNode);
      procedure ReleaseAttainableNodes;
      procedure ReleaseHeuristedNodes;
  