public virtual object Execute(ExecutionInformation info, IReadOnlyList <ICommand> arguments, IReadOnlyList <Type> returnTypes)
        {
            var filterLazy = info.GetFilterLazy();

            foreach (var type in returnTypes)
            {
                try
                {
                    var result = FunctionCommand.ConvertParam(Content, type, filterLazy);
                    Log.Debug("Converting command result {0} to {1} returns {2}", Content, type, result);

                    return(ResultHelper.ToResult(type, result));
                }
                catch (Exception ex)
                {
                    Log.Debug(ex, "Converting command result {0} to {1} failed", Content, type);
                }
            }
            throw new CommandException(strings.error_cmd_no_matching_overload, CommandExceptionReason.NoReturnMatch);
        }