public void Register(ICommandBuilder command, IExtension extension)
        {
            Assert.IsNotNull(command);
            Assert.IsNotNull(extension);
            Command builded = command.Build();

            Assert.IsNotNull(builded);

            Builders.Add(command, builded);
            RBuilders.Add(builded, command);
            Commands.Add(builded, extension);
        }
 public void Unregister(params Command[] commands)
 {
     Assert.IsNotNull(commands);
     foreach (Command cmd in commands)
     {
         Assert.IsNotNull(cmd);
         _ = Commands.Remove(cmd);
         if (RBuilders.TryGetValue(cmd, out ICommandBuilder? value))
         {
             _ = RBuilders.Remove(cmd);
             _ = Builders.Remove(value);
         }
     }
 }