private void ParseParameters(List <string> input)
        {
            if (input != null && input.Count > 0)
            {
                var list  = new List <IParameter>();
                var nodes = new List <string>(input);

                foreach (var node in nodes)
                {
                    if (node.StartsWith(CLIConstants.DParameterPrefix))
                    {
                        IParameter param;

                        if (node.Contains("="))
                        {
                            param = _objectsFactory.GetParameter(node.Substring(CLIConstants.DParameterPrefix.Length, node.IndexOf("=") - 2));

                            if (param.RequiresArgument)
                            {
                                param.Argument = node.Substring(node.IndexOf("=") + 1);
                            }

                            else
                            {
                                throw new InvalidCommandException(ErrorCodes.InvalidParameter, $"The {param.Name} parameter does not accept arguments.");
                            }
                        }

                        else
                        {
                            param = _objectsFactory.GetParameter(node.Substring(CLIConstants.DParameterPrefix.Length));

                            if (param.RequiresArgument)
                            {
                                throw new InvalidCommandException(ErrorCodes.InvalidParameter, $"The {param.Name} parameter requires argument.");
                            }
                        }

                        list.Add(param);
                        input.Remove(node);
                    }

                    else if (node.StartsWith("-"))
                    {
                        list.AddRange(node.Skip(1).Select(c => _objectsFactory.GetParameter(c.ToString())));
                        input.Remove(node);
                    }
                }

                if (list.Any())
                {
                    _command.AddParameters(list);
                }
            }

            else if (_command.RequiresParameters)
            {
                throw new InvalidCommandException(ErrorCodes.CommandRequiresParameter, $"{_command.Name} command requires at least one parameter.");
            }
        }