anchor.diff:  function TUnitActionWalkTo.CanAbandonInternal: boolean;
   begin
     Result := (fInteractionStatus <> kis_Pushed) //Can be removed, but decreases effectiveness
  -            and (not fDoExchange); //Other unit could have set this
  -end;
  -
  -
  -{ Returns true only when unit is stuck for some reason }
  +            and not fDoExchange; //Other unit could have set this
  +end;
  +
  +
  +// Returns true only when unit is stuck for some reason
   function TUnitActionWalkTo.CanAbandonExternal: boolean;
   begin
     Result := (not fDoExchange) //Other unit could have set this
  
positive.code: 
  procedure TUnitActionWalkTo.ExplanationLogAdd;
  begin
    if not WRITE_WALKTO_LOG then exit;
    ExplanationLog.Add(Format(
    '%d'+#9+'%d:%d > %d:%d > %d:%d'+#9+Explanation+'',
    [
    gGame.GameTickCount,
    fUnit.PrevPosition.X,
    fUnit.PrevPosition.Y,
    fUnit.GetPosition.X,
    fUnit.GetPosition.Y,
    fUnit.NextPosition.X,
    fUnit.NextPosition.Y
    ]))
  end;
  
  
  
negative.code:     function CanWalkToTarget(aFrom: TKMPoint; aPass: TPassability): Boolean;
      function CheckForNewDestination: TDestinationCheck;
      function CheckTargetHasDied: Boolean;
      function CheckForObstacle: TObstacleCheck;
      function CheckWalkComplete:boolean;
      function CheckInteractionFreq(aIntCount,aTimeout,aFreq:integer): Boolean;
      function DoUnitInteraction: Boolean;
  