anchor.diff:      fUsedNodes: array of TNavMeshNode;
   
       function HeapCmp(A,B: Pointer): Boolean;
  -    procedure Flush();
  +    procedure Flush(aDestroy: Boolean = False);
     protected
       function GetNodeAt(aIdx: Word): TNavMeshNode;
       function MovementCost(aFrom, aTo: Word; var aSPoint, aEPoint: TKMPoint): Word;
       function EstimateToFinish(aIdx: Word): Word;
   
       function MakeRoute(): Boolean;
  -    function ReturnRoute(out aRoutePointArray: TKMPointArray): TKMWordArray;
  +    procedure ReturnRoute(out aRouteArray: TKMWordArray; out aRoutePointArray: TKMPointArray);
     public
       constructor Create();
       destructor Destroy(); override;
   
  -    function Route_Make(aStart, aEnd: Word; out aRouteArray: TKMWordArray; out aRoutePointArray: TKMPointArray): Boolean;
  +    function Route_Make(aStart, aEnd: TKMPoint; out aRouteArray: TKMWordArray; out aRoutePointArray: TKMPointArray): Boolean;
     end;
   
   
  
positive.code: 
  destructor TNavMeshPathFinding.Destroy;
  begin
    Flush();
    fHeap.Free;
    inherited;
  end;
  
negative.code: end;
  
  
  procedure TNavMeshPathFinding.ReturnRoute(out aRouteArray: TKMWordArray; out aRoutePointArray: TKMPointArray);
  const
    USED_PENALIZATION = 40;
  var
    Count: Word;
    N: TNavMeshNode;
    Output: TKMWordArray;
  begin
  