anchor.diff:        + 'utCrab,         utWaterflower,  utWaterleaf,    utDuck)');
   
       Sender.AddTypeS('TReplaceFlags', '(rfReplaceAll, rfIgnoreCase)'); //Needed for string util Utils.StringReplace
  +
  +    // Add CampaignData type and variable only after addition of all other custom types,
  +    // so those types could be used in the TKMCampaignData declaration
  +    AddCampaignData;
   
       // Register classes and methods to the script engine.
       // After that they can be used from within the script.
  
positive.code:       Assert(False, Format('Error registering "%s"', [aDecl]));
    end;
  
  var
    campaignDataType: TPSType;
    c: TPSCompileTimeClass;
  begin
    if Name = 'SYSTEM' then
    begin
      if fCampaignDataTypeScriptCode <> '' then
        try
          campaignDataType := Sender.AddTypeS(CAMPAIGN_DATA_TYPE, fCampaignDataTypeScriptCode);
  
negative.code:           fValidationIssues.AddError(0, 0, '', 'Error in declaration of global campaign data type');
          end;
        end;
    end;
  
  var
    c: TPSCompileTimeClass;
  begin
    if Name = 'SYSTEM' then
    begin
      // Common
      Sender.AddTypeS('TIntegerArray', 'array of Integer'); //Needed for PlayerGetAllUnits
      Sender.AddTypeS('TAnsiStringArray', 'array of AnsiString'); //Needed for some array Utils
  