internal SerializedScopeStatement(string name, string[] parameterNames, int argCount, FunctionAttributes flags, int startIndex, int endIndex, string path, string[] freeVars, string[] names, string[] cellVars, string[] varNames)
        {
            _name     = name;
            _filename = path;
            _flags    = flags;
            SetLoc(null, startIndex, endIndex);
            _parameterNames = parameterNames;

            _argCount       = argCount;
            _kwOnlyArgCount = parameterNames.Length - argCount;
            if (flags.HasFlag(FunctionAttributes.ArgumentList))
            {
                _kwOnlyArgCount--;
            }
            if (flags.HasFlag(FunctionAttributes.KeywordDictionary))
            {
                _kwOnlyArgCount--;
            }

            if (freeVars != null)
            {
                foreach (string freeVar in freeVars)
                {
                    AddFreeVariable(new PythonVariable(freeVar, VariableKind.Local, this), false);
                }
            }
            if (names != null)
            {
                foreach (string globalName in names)
                {
                    AddGlobalVariable(new PythonVariable(globalName, VariableKind.Global, this));
                }
            }
            if (varNames != null)
            {
                foreach (string variable in varNames)
                {
                    EnsureVariable(variable);
                }
            }
            if (cellVars != null)
            {
                foreach (string cellVar in cellVars)
                {
                    AddCellVariable(new PythonVariable(cellVar, VariableKind.Local, this));
                }
            }
        }