private CommandWithArguments GetCommandWithArgumentsAndCommandFunction(string line, out Func <string, string, SmtpResponse> commandFunc)
        {
            var commandWithArguments = SplitCommandWithArgumentsAtCharacter(line, ':');

            if (commandWithArguments == CommandWithArguments.Empty ||
                !_commandMapping.TryGetValue(commandWithArguments.Command, out commandFunc))
            {
                commandWithArguments = SplitCommandWithArgumentsAtCharacter(line, ' ');
            }

            if (commandWithArguments == CommandWithArguments.Empty ||
                !_commandMapping.TryGetValue(commandWithArguments.Command, out commandFunc))
            {
                commandWithArguments = new CommandWithArguments {
                    Command = line.ToUpperInvariant().Trim()
                };
                _commandMapping.TryGetValue(commandWithArguments.Command, out commandFunc);
            }
            return(commandWithArguments);
        }
        private CommandWithArguments GetCommandWithArgumentsAndCommandFunction(string line, out Func<string, string, SmtpResponse> commandFunc)
        {
            var commandWithArguments = SplitCommandWithArgumentsAtCharacter(line, ':');

            if (commandWithArguments == CommandWithArguments.Empty ||
                !_commandMapping.TryGetValue(commandWithArguments.Command, out commandFunc))
            {
                commandWithArguments = SplitCommandWithArgumentsAtCharacter(line, ' ');
            }

            if (commandWithArguments == CommandWithArguments.Empty ||
                !_commandMapping.TryGetValue(commandWithArguments.Command, out commandFunc))
            {
                commandWithArguments = new CommandWithArguments { Command = line.ToUpperInvariant().Trim() };
                _commandMapping.TryGetValue(commandWithArguments.Command, out commandFunc);
            }
            return commandWithArguments;
        }