Option <CommandFactoryIdentifier> ICommandFactoryProvider.RegisterFactory <TSpec, TPayload>
        (CommandFactory <TSpec, TPayload> factory, string FactoryName)
    {
        var identifier = CommandFactoryIdentifier.Create(GetCommandName <TSpec>(), FactoryName);
        var succeeded  = FactoryIndex.TryAdd(identifier, AdaptFactory(factory));

        return
            (succeeded ? identifier : none <CommandFactoryIdentifier>());
    }
 Option <CommandFactory <TSpec, TPayload> > ICommandFactoryProvider.Factory <TSpec, TPayload>(string FactoryName)
 => FactoryIndex
 .TryFind(CommandFactoryIdentifier.Create(GetCommandName <TSpec>(), FactoryName))
 .MapValueOrDefault(adapter => adapter.Factory <TSpec, TPayload>());
 Option <CommandFactory> ICommandFactoryProvider.Factory(CommandName CommandName, string FactoryName)
 => FactoryIndex
 .TryFind(CommandFactoryIdentifier.Create(CommandName, FactoryName))
 .MapValueOrDefault(adapter => adapter.Factory());