EvaluationResult IObjectValueSource.SetValue(ObjectPath path, string value, EvaluationOptions options)
        {
            Context.WaitRuntimeInvokes();
            var ctx = GetContext(options);

            return(ValueModificationUtil.ModifyValue(ctx, value, Type, newVal => SetValue(ctx, newVal)));
        }
        EvaluationResult IObjectValueSource.SetValue(ObjectPath path, string value, EvaluationOptions options)
        {
            if (path.Length != 2)
            {
                throw new InvalidOperationException(string.Format("ObjectPath for array element is invalid: {0}", path));
            }

            int[] idx  = StringToIndices(path [1]);
            var   cctx = ctx.WithOptions(options);

            return(ValueModificationUtil.ModifyValue(cctx, value, array.ElementType, newVal => array.SetElement(idx, newVal)));
        }