anchor.diff:  procedure TAIDefencePositions.Add(const aPos: TKMPointDir; aGroupType: TKMGroupType; aRadius: Integer; aDefenceType: TKMAIDefencePosType);
   begin
     Assert(aGroupType in GROUP_TYPES_VALID, 'Invalid group type: ' + GetEnumName(TypeInfo(TKMGroupType), Integer(aGroupType)));
  -  fPositions.Add(TAIDefencePosition.Create(aPos, aGroupType, aRadius, aDefenceType));
  +  fPositions.Add(TAIDefencePosition.Create(gGame.GetNewUID, aPos, aGroupType, aRadius, aDefenceType));
   end;
   
   
  
positive.code: 
  constructor TAIDefencePosition.Load(LoadStream: TKMemoryStream);
  begin
    inherited Create;
    LoadStream.CheckMarker('ClsDefencePos');
    LoadStream.Read(fPosition);
    LoadStream.Read(fGroupType, SizeOf(fGroupType));
  
negative.code: implementation
  uses
    SysUtils, TypInfo,
    KM_Game, KM_GameParams, KM_HandsCollection, KM_RenderAux, KM_RenderPool, KM_Hand,
    KM_UnitGroupTypes, KM_InterfaceGame;
  
  
  { TAIDefencePosition }
  constructor TAIDefencePosition.Create(aUID: Integer; const aPos: TKMPointDir; aGroupType: TKMGroupType; aRadius: Integer; aDefenceType: TKMAIDefencePosType);
  begin
    inherited Create(aUID);
  
    Assert(aGroupType in GROUP_TYPES_VALID, 'Invalid group type: ' + GetEnumName(TypeInfo(TKMGroupType), Integer(aGroupType)));
    fPosition := aPos;
  