anchor.diff:      procedure SyncLoad; override;
       procedure CloseUnit(aRemoveTileUsage: Boolean = True); override;
       destructor Destroy; override;
  +
  +    property Group: pointer read fGroup; // Property for GetGroupByMember function
  +    procedure SetGroup(aGroup: pointer); // This procedure should not be called by anyone except UnitGroups class (it is out of property)
   
       function GetWarriorActivityText(aIsAttackingUnit: Boolean): UnicodeString;
       procedure KillUnit(aFrom: TKMHandIndex; aShowAnimation, aForceDelay: Boolean); override;
  
positive.code: uses
    KM_ResTexts, KM_HandsCollection, KM_RenderPool, KM_RenderAux, KM_UnitTaskAttackHouse, KM_HandLogistics,
    KM_UnitActionAbandonWalk, KM_UnitActionFight, KM_UnitActionGoInOut, KM_UnitActionWalkTo, KM_UnitActionStay,
    KM_UnitActionStormAttack, KM_Resource, KM_ResUnits, KM_Hand,
    KM_ResWares, KM_Game, KM_ResHouses;
  
  
  
negative.code: begin
    //This ensures that pointer usage tracking is reset
    ClearOrderTarget;
    gHands.CleanUpGroupPointer( TKMUnitGroup(fGroup) );
  
    inherited;
  end;
  
  
  procedure TKMUnitWarrior.SetGroup(aGroup: pointer);
  begin
    gHands.CleanUpGroupPointer( TKMUnitGroup(fGroup) );
    fGroup := TKMUnitGroup(aGroup).GetGroupPointer();
  end;
  
  
  