anchor.diff:          Buffers: array[0..31] of Pointer;
           Count: NativeUInt;
         end;
  +      Finish: PCPFNode;
         AttainableTree: Boolean;
  -      HotPool: record
  -        First: TCPFNode;
  -        Last: TCPFNode;
  +      Default: TCPFHeuristedPool;
  +      Hot: record
  +        Pool: TCPFHeuristedPool;
           LockedExcluded: Boolean;
           Unattainable: Boolean;
  -        KnownPathNode: PCPFNode;
  +        KnownPathCoordinates: TCPFPoint;
  +        KnownPathChild: Cardinal;
         end;
  -      HeuristedPool: record
  -        First: TCPFNode;
  -        Last: TCPFNode;
  -      end;
  -      UnattainablePool: record
  -        First: TCPFNode;
  -        Last: TCPFNode;
  -      end;
  +      Unattainable: TCPFHeuristedPool;
       end;
       FActualInfo: record
         TilesChanged: Boolean;
  
positive.code:   HighPoint: PPoint;
    {$endif}
  begin
    {$ifdef CPUX86}Store.{$endif}FinishCoordinates := (Params.Finish.Y shl 16) + Params.Finish.X;
    Point := Params.Starts;
    Count := Params.StartsCount;
  
  
negative.code:   FLAG_STARTS = (1 shl 5);
    FLAG_EXCLUDES = (1 shl 6);
  
    // FLAGS_STANDARD_POOL = FLAG_CACHING or FLAG_FINISH or FLAG_HEURISTICS;
    // FLAGS_UNATTAINABLE_POOL = FLAG_CACHING or FLAG_FINISH or FLAG_TILEWEIGHTS;
    // FLAGS_ATTAINABLE_TREE = FLAG_CACHING or FLAG_FINISH or FLAG_TILEWEIGHTS;
  
    CHANGED_FINISH_INTERVAL = 8;
  label
    weights_flags, nodes_initialized, path_not_found,
    change_beststart, next_start, fill_result;
  var
    i: NativeUInt;
    MapWidth, MapHeight: Cardinal;
    Cell: PCPFCell;
    CellInfo: NativeUInt;
    FinishX, FinishY: Integer;
    S: PPoint;
    Flags: NativeUInt;
  