class CommandManagerImpl implements CommandManager<C, V>,
                                                 HasCommandListener<CommandListener<C, V>> {

    @Override
    public CommandResult<V> allow(final C context,
                                  final Command<C, V> command) {
        Objects.requireNonNull(command, "command");
        logCommand("ALLOW",
                   command);
        final CommandResult<V> result = command.allow(context);
        if (null != listener) {
            listener.onAllow(context,
                             command,
                             result);
        }
        logResult(result);
        return result;
    }

    public  CommandManagerImpl();

}