private static string InsertVariablesAndEscapedCharacters(string line)
    {
        string result = "";
        bool   doubleQuotationMarkZone = false;
        bool   singleQuotationMarkZone = false;
        bool   shielding           = false;
        bool   variableNameStarted = false;
        string currentVariableName = "";
        string currentArg          = "";

        for (int i = 0; i < line.Length; i++)
        {
            if (!shielding)
            {
                if (variableNameStarted && !ValidСharacters.Contains(line[i]))
                {
                    var variableValue = Runtime.GetVariable(currentVariableName);
                    if (variableValue != null)
                    {
                        currentArg += variableValue;
                    }

                    variableNameStarted = false;
                    currentVariableName = "";
                }

                if (line[i] == '\'')
                {
                    if (!doubleQuotationMarkZone)
                    {
                        singleQuotationMarkZone = !singleQuotationMarkZone;
                    }

                    currentArg += line[i];
                }
                else if (line[i] == '\"')
                {
                    if (!singleQuotationMarkZone)
                    {
                        doubleQuotationMarkZone = !doubleQuotationMarkZone;
                    }

                    currentArg += line[i];
                }
                else if (line[i] == '$')
                {
                    if (singleQuotationMarkZone)
                    {
                        currentArg += line[i];
                    }
                    else
                    {
                        variableNameStarted = true;
                    }
                }
                else if (line[i] == ' ')
                {
                    if (!singleQuotationMarkZone && !doubleQuotationMarkZone)
                    {
                        result    += currentArg + " ";
                        currentArg = "";
                    }
                    else
                    {
                        currentArg += " ";
                    }
                }
                else if (line[i] == '\u005C')
                {
                    if (singleQuotationMarkZone)
                    {
                        currentArg += "\u005C";
                    }
                    else
                    {
                        shielding = true;
                    }
                }
                else if (ValidСharacters.Contains(line[i]))
                {
                    if (variableNameStarted)
                    {
                        currentVariableName += line[i];
                    }
                    else
                    {
                        currentArg += line[i];
                    }
                }
                else
                {
                    currentArg += line[i];
                }
            }
            else
            {
                if (line[i] == ' ')
                {
                    currentArg += "\" \"";
                }
                else
                {
                    currentArg += line[i];
                }

                shielding = false;
            }
        }

        if (variableNameStarted)
        {
            var variableValue = Runtime.GetVariable(currentVariableName);
            if (variableValue != null)
            {
                currentArg += variableValue;
            }
        }

        if (currentArg.Length != 0)
        {
            result += currentArg;
        }

        return(result);
    }
    public static List <string>?ParseArguments(string argumentsLine, bool insertVariablesAndEscapedCharacters = false)
    {
        if (insertVariablesAndEscapedCharacters)
        {
            argumentsLine = InsertVariablesAndEscapedCharacters(argumentsLine);
        }

        var    arguments = new List <string>();
        bool   doubleQuotationMarkZone = false;
        bool   singleQuotationMarkZone = false;
        string currentArg = "";

        for (int i = 0; i < argumentsLine.Length; i++)
        {
            if (argumentsLine[i] == '\'')
            {
                if (doubleQuotationMarkZone)
                {
                    currentArg += "\'";
                }
                else
                {
                    singleQuotationMarkZone = !singleQuotationMarkZone;
                }
            }
            else if (argumentsLine[i] == '\"')
            {
                if (singleQuotationMarkZone)
                {
                    currentArg += "\"";
                }
                else
                {
                    doubleQuotationMarkZone = !doubleQuotationMarkZone;
                }
            }
            else if (argumentsLine[i] == ' ')
            {
                if (!singleQuotationMarkZone && !doubleQuotationMarkZone)
                {
                    arguments.Add(currentArg);
                    currentArg = "";
                }
                else
                {
                    currentArg += " ";
                }
            }
            else if (ValidСharacters.Contains(argumentsLine[i]) || SpecialСharacters.Contains(argumentsLine[i]))
            {
                currentArg += argumentsLine[i];
            }
            else
            {
                return(null);
            }
        }

        if (currentArg.Length != 0)
        {
            if (!singleQuotationMarkZone && !doubleQuotationMarkZone)
            {
                arguments.Add(currentArg);
            }
            else
            {
                return(null);
            }
        }

        return(arguments);
    }