@@ -412,13 +412,15 @@ public static void ReplaceActionKeyword(string id, IReadOnlyList<string> oldActi
412412        { 
413413            if  ( CheckActionKeywordChanged ( oldActionKeywords ,  newActionKeywords ) ) 
414414            { 
415-                 foreach  ( var  actionKeyword  in  newActionKeywords ) 
415+                 // Fix collection modified while iterating exception 
416+                 var  oldActionKeywordsClone  =  oldActionKeywords . ToList ( ) ; 
417+                 foreach  ( var  actionKeyword  in  oldActionKeywordsClone ) 
416418                { 
417-                     AddActionKeyword ( id ,  actionKeyword ) ; 
419+                     RemoveActionKeyword ( id ,  actionKeyword ) ; 
418420                } 
419-                 foreach  ( var  actionKeyword  in  oldActionKeywords ) 
421+                 foreach  ( var  actionKeyword  in  newActionKeywords ) 
420422                { 
421-                     RemoveActionKeyword ( id ,  actionKeyword ) ; 
423+                     AddActionKeyword ( id ,  actionKeyword ) ; 
422424                } 
423425
424426                // Update action keyword in plugin metadata 
@@ -445,8 +447,8 @@ public static void ReplaceActionKeyword(string id, string oldActionKeyword, stri
445447        { 
446448            if  ( oldActionKeyword  !=  newActionKeyword ) 
447449            { 
448-                 AddActionKeyword ( id ,  newActionKeyword ) ; 
449450                RemoveActionKeyword ( id ,  oldActionKeyword ) ; 
451+                 AddActionKeyword ( id ,  newActionKeyword ) ; 
450452
451453                // Update action keyword in plugin metadata 
452454                var  plugin  =  GetPluginForId ( id ) ; 
0 commit comments