public void Execute(IContext context)
{
object value = this.expression.Evaluate(context);
object[] indexes = null;
List<object> values = new List<object>();
foreach (IExpression expression in this.arguments)
values.Add(expression.Evaluate(context));
indexes = values.ToArray();
object obj = null;
if (ObjectUtilities.IsNumber(indexes[0]))
obj = ExpressionUtilities.ResolveToList(this.leftValue, context);
else if (indexes.Length == 1)
{
IObject iobj = (IObject)ExpressionUtilities.ResolveToObject(this.leftValue, context);
iobj.SetValue(indexes[0].ToString(), value);
return;
}
else
obj = ExpressionUtilities.ResolveToDictionary(this.leftValue, context);
ObjectUtilities.SetIndexedValue(obj, indexes, value);
}