/// <inheritdoc />
        public override void Set(object instance, IMoValue value)
        {
            var propType = _propertyInfo.PropertyType;

            if (propType == typeof(double))
            {
                _propertyInfo.SetValue(instance, value.AsDouble());
                return;
            }
            else if (propType == typeof(float))
            {
                _propertyInfo.SetValue(instance, value.AsFloat());
                return;
            }
            else if (propType == typeof(bool))
            {
                _propertyInfo.SetValue(instance, value.AsBool());
                return;
            }
            else if (propType == typeof(string))
            {
                _propertyInfo.SetValue(instance, value.AsString());
                return;
            }

            _propertyInfo.SetValue(instance, value);
            InvokeChanged();
        }
        /// <inheritdoc />
        public override IMoValue Evaluate(MoScope scope, MoLangEnvironment environment)
        {
            IMoValue evalLeft = Left.Evaluate(scope, environment);

            //IMoValue value = environment.GetValue(new MoPath(evalLeft.AsString()));

            if (evalLeft == null || !evalLeft.AsBool())
            {
                return(Right.Evaluate(scope, environment));
            }
            else
            {
                return(evalLeft);
            }
        }