anchor.diff:      function Execute: TKMActionResult; override;
       procedure Save(SaveStream: TKMemoryStream); override;
       procedure Paint; override; //Used only for debug so far
  -    function NeedToPaint(aRect: TKMRect): Boolean; //Used only for debug so far
  +    function NeedToPaint(const aRect: TKMRect): Boolean; //Used only for debug so far
     end;
   
   
  
positive.code:     //Check if we can walk to next tile in the route
      //Don't use CanAbandonInternal because skipping this check can cause crashes
      if not fDoExchange then
        case CheckForObstacle(OldDir) of
          ocNoObstacle:   ;
          ocReRouteMade:  Exit; //Self was freed so exit immediately. New route will pick-up
          ocNoRoute:      begin Result := arActAborted; Exit; end; //
        end;
  
      //Perform exchange
  
negative.code:     if not fDoExchange and CheckWalkComplete then
      begin
        if (fDistance > 0) and ((fUnit.Task = nil) or (not fUnit.Task.WalkShouldAbandon))
        and not KMSamePoint(NodeList[NodePos], fWalkTo) then //Happens rarely when we asked to sidestep towards our not locked target (Warrior)
          fUnit.Direction := KMGetDirection(NodeList[NodePos], fWalkTo); //Face tile (e.g. worker)
        Exit(arActDone);
      end;
  
      //Check if target unit (warrior) has died and if so abandon our walk and so delivery task can exit itself
      if CanAbandonInternal then
        if CheckTargetHasDied then
          Exit(arActAborted);
  
      //This is sometimes caused by unit interaction changing the route so simply ignore it
      if KMSamePoint(NodeList[NodePos], NodeList[NodePos+1]) then
  