/// <inheritdoc />
        protected override object ExecuteToken(ScriptContext context)
        {
            if (context.Arguments?.ContainsVariable(Name) ?? false)
            {
                return(context.Arguments.GetVariable(Name));
            }

            IVariableProvider provider = context.Variables.GetProvider(Name);

            if (provider == null)
            {
                throw new ScriptRuntimeException($"Variable {Name} not declared", this);
            }

            return(provider.GetVariable(Name));
        }