/// <summary>
 /// Used to set the value of an argument.
 /// </summary>
 /// <param name="scriptEngine"> The associated script engine. </param>
 /// <param name="scope"> The scope (global or eval context) or the parent scope (function
 /// context). </param>
 /// <param name="thisObject"> The value of the <c>this</c> keyword. </param>
 /// <param name="functionObject"> The function object. </param>
 /// <param name="argumentValues"> The arguments that were passed to the function. </param>
 /// <returns> The result of calling the method. </returns>
 private object ArgumentSetter(ScriptEngine engine, Compiler.Scope scope, object thisObject, Library.FunctionInstance functionObject, object[] argumentValues)
 {
     int argumentIndex = TypeConverter.ToInteger(functionObject.GetPropertyValue("argumentIndex"));
     if (argumentValues != null && argumentValues.Length >= 1)
     {
         object value = argumentValues[0];
         this.scope.SetValue(this.callee.ArgumentNames[argumentIndex], value);
     }
     return Undefined.Value;
 }
 /// <summary>
 /// Used to retrieve the value of an argument.
 /// </summary>
 /// <param name="scriptEngine"> The associated script engine. </param>
 /// <param name="scope"> The scope (global or eval context) or the parent scope (function
 /// context). </param>
 /// <param name="thisObject"> The value of the <c>this</c> keyword. </param>
 /// <param name="functionObject"> The function object. </param>
 /// <param name="argumentValues"> The arguments that were passed to the function. </param>
 /// <returns> The result of calling the method. </returns>
 private object ArgumentGetter(ScriptEngine engine, Compiler.Scope scope, object thisObject, Library.FunctionInstance functionObject, object[] argumentValues)
 {
     int argumentIndex = TypeConverter.ToInteger(functionObject.GetPropertyValue("argumentIndex"));
     return this.scope.GetValue(this.callee.ArgumentNames[argumentIndex]);
 }