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

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

    public  CommandManagerImpl();

}