public ScriptObject Call(ScriptContext parentContext, Dictionary<String, ScriptObject> objs, ScriptObject[] parameters) {
int length = parameters.Length;
if (m_Params) {
ScriptArray paramsArray = m_Script.CreateArray();
for (int i = 0; i < m_ParameterCount - 1; ++i) {
objs[m_ListParameters[i]] = (parameters != null && length > i) ? parameters[i] : m_Script.Null;
}
for (int i = m_ParameterCount - 1; i < length; ++i) {
paramsArray.Add(parameters[i]);
}
objs[m_ListParameters[m_ParameterCount - 1]] = paramsArray;
} else {
for (int i = 0; i < m_ParameterCount; ++i) {
objs[m_ListParameters[i]] = (parameters != null && length > i) ? parameters[i] : m_Script.Null;
}
}
ScriptContext context = new ScriptContext(m_Script, m_ScriptExecutable, parentContext, Executable_Block.Function);
context.Initialize(objs);
return context.Execute();
}
}