public void SetDisplayValue(IBehaviorContext vm, object value)
        {
            Check.NotNull(vm, nameof(vm));

            IValueAccessorBehavior <TValue> accessBehavior =
                GetNextBehavior <IValueAccessorBehavior <TValue> >();

            //ChangeValueRequest<TValue> request = value as ChangeValueRequest<TValue>;
            //if (request != null) {
            //   ConversionResult<TValue> result = request.Converter.ConvertBack(request.NewValue);
            //   if (result.Successful) {
            //      vm.FieldValues.ClearField(_conversionErrorField);
            //      accessBehavior.SetValue(vm, result.Value);
            //   } else {
            //      vm.FieldValues.SetValue(_conversionErrorField, result.ErrorMessage);
            //      return;
            //   }
            //} else {
            // TODO: Tidy up this if...
            if (value is TValue || (value == null && TypeService.CanAssignNull(typeof(TValue))))
            {
                accessBehavior.SetValue(vm, (TValue)value);
            }
            else
            {
                throw new ArgumentException(
                          ExceptionTexts.DisplayValueHasWrongType.FormatWith(
                              _propertyName, typeof(TValue).Name, value
                              ),
                          "value"
                          );
            }
            //}
        }
        public void CanAssignNull_ReferenceType()
        {
            Assert.IsTrue(TypeService.CanAssignNull(typeof(object)));
            Assert.IsTrue(TypeService.CanAssignNull(typeof(Nullable <int>)));

            Assert.IsFalse(TypeService.CanAssignNull(typeof(int)));
            Assert.IsFalse(TypeService.CanAssignNull(typeof(TestStruct)));
        }