anchor.diff:    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;
  +  Node := FNodes.HeuristedPool.First.Next;
  +  if (Node = @FNodes.HeuristedPool.Last) then Exit;
  +  FNodes.HeuristedPool.First.Next := @FNodes.HeuristedPool.Last;
  +  FNodes.HeuristedPool.Last.Prev := @FNodes.HeuristedPool.First;
   
     // clear flag loop
     Cells := FInfo.CellArray;
  
positive.code: 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.FActualInfo.FinishPoint.X := -1;
    Self.FActualInfo.FinishPoint.Y := -1;
  
  
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;
  