/// Remove a updater
 public void Remove(IAnimationUpdater updater)
 {
   if (updaters.Contains(updater))
   {
     updaters.Remove(updater);
   }
 }
 /// Add a updater
 public void Add(IAnimationUpdater updater)
 {
   if (!updaters.Contains(updater))
   {
     updaters.Add(updater);
   }
 }
 /// Remove a updater
 public void Remove(IAnimationUpdater updater)
 {
     if (Updaters.Contains(updater))
     {
         Updaters.Remove(updater);
     }
 }
 /// Add a updater
 public void Add(IAnimationUpdater updater)
 {
     if (!Updaters.Contains(updater))
     {
         Updaters.Add(updater);
     }
 }
 private static void AddUpdaterToDict(Dictionary <string, IAnimationUpdater> dict, IAnimationUpdater updater)
 {
     if (dict.TryGetValue(updater.Name, out var existingUpdater))
     {
         if (existingUpdater is AnimationGroupUpdater group)
         {
             group.Children.Add(updater);
         }
         else
         {
             dict.Remove(updater.Name);
             var newGroup = new AnimationGroupUpdater(updater.Name);
             newGroup.Children.Add(existingUpdater);
             newGroup.Children.Add(updater);
             dict.Add(newGroup.Name, newGroup);
         }
     }
     else
     {
         dict.Add(updater.Name, updater);
     }
 }