/// <inheritdoc/>
        public override void Mutate(UltravioletContext uv, Object instance, Object value, UvmlInstantiationContext context)
        {
            var dobj = instance as DependencyObject;

            if (dobj == null)
            {
                return;
            }

            var expression = ProcessPrecomputedValue <String>(value, context);

            if (expression == null)
            {
                throw new UvmlException(PresentationStrings.InvalidBindingExpression.Format("(null)"));
            }

            var compiled = context.GetCompiledBindingExpression(dpropID.PropertyType, expression);

            if (compiled == null)
            {
                throw new UvmlException(PresentationStrings.CompiledExpressionNotFound.Format(expression));
            }

            var fmtString = BindingExpressions.GetBindingFormatStringPart(expression);

            if (fmtString != null)
            {
                dobj.BindValue(dpropID, context.DataSourceType, "{{" + compiled.Name + "}}[" + fmtString + "]");
            }
            else
            {
                dobj.BindValue(dpropID, context.DataSourceType, "{{" + compiled.Name + "}}");
            }
        }