docs: function (propertyName, newValue, oldValue) {
              if (propertyName === 'value') {
  
                  this.setHelpText(false);
                  this.setPrefillText(false, null, true);
  
                  var cfg = this._cfg;
                  var displayText = "";
  
                  var res = this.checkValue({
                      performCheckOnly : true,
                      value : newValue,
                      text : newValue == null ? "" : null
                  });
  
                  if (res.isValid) {
                      if (this._cfg && res.report && res.report.text != null) {
                          if (this._cfg.directOnBlurValidation) {
                              this.changeProperty("formatError", false);
                          }
                          displayText = res.report.text;
                      }
  
                      // Setting directly the value is safe
                      this.getTextInputField().value = displayText;
                      res.report.$dispose();
                      // Update the data model
                      if (res.report && res.report.value != newValue) {
                          var value = res.report.value;
                          if (!this._isPropertyEquals("value", value)) {
                              this.setProperty("value", value);
                          }
                      }
                  } else {
                      this.$logError(this.WIDGET_VALUE_IS_WRONG_TYPE, [newValue]);
                      res.report.$dispose();
                      return;
                  }
  
                  // in case things have changed the field, try to set an helptext
                  this.setHelpText(true);
                  if (((ariaUtilsType.isArray(cfg.value) && ariaUtilsArray.isEmpty(cfg.value)) || !cfg.value)
                          && cfg.prefill && cfg.prefill + "") {
                      this.setPrefillText(true, cfg.prefill, true);
                  }
  
              } else if (propertyName === 'invalidText') {
                  // no need to handle combinations of newValue and oldValue being: null, undefined, ''
                  // this can happen when invalidText is set from the checkValue below, causing an infinite loop
                  if (newValue == oldValue) {
                      return;
                  }
                  var res;
                  // first check the old value to see if it is valid
                  if (this._cfg.value) {
                      res = this.checkValue({
                          performCheckOnly : true,
                          value : this._cfg.value,
                          text : newValue == null ? "" : null
                      });
                  }
                  // only update the display value if the old value is not a valid value, or the old value is null
                  if (!res || !res.isValid) {
                      var textField = this.getTextInputField();
                      if (textField) {
                          this._setText(newValue);
                      }
                  }
                  if (res && res.report) {
                      res.report.$dispose();
                  }
                  // resets error state when validation is switched on
                  if (!newValue) {
                      this.changeProperty("formatErrorMessages", []);
                      this.changeProperty("formatError", false);
                      this.changeProperty("error", false);
                  }
                  // set the invalidText property and react to the change
                  this.setProperty("invalidText", newValue);
                  this._reactToChange();
              } else if (propertyName === 'readOnly' || propertyName === 'disabled') {
                  if (newValue) {
                      // PTR 04746599: disabling the field or making it read-only
                      // is incompatible with having the field in
                      // focus:
                      this._hasFocus = false;
                  }
                  this._cfg[propertyName] = newValue;
                  this._reactToChange();
              } else if (propertyName === 'mandatory' || propertyName === 'formatError'
                      || propertyName === 'formatErrorMessages' || propertyName === 'error'
                      || propertyName === 'errorMessages') {
                  this._cfg[propertyName] = newValue;
                  this._reactToChange();
                  var cfg = this._cfg;
                  if (cfg && cfg.validationEvent === 'onError' && (this._keepFocus || this._hasFocus)) {
                      if ((cfg.formatError && cfg.formatErrorMessages.length) || (cfg.error && cfg.errorMessages.length)) {
                          this._validationPopupShow();
                      } else {
                          this._validationPopupHide();
                      }
                  }
  
                  if (cfg.waiAria && propertyName === 'mandatory') {
                      var input = this.getTextInputField();
                      if (newValue) {
                          input.setAttribute("aria-required", "true");
                      } else {
                          input.removeAttribute("aria-required");
                      }
                  }
  
              } else if (propertyName == "prefill") {
                  this.setPrefillText(true, newValue, true);
              } else if (propertyName == "prefillError") {
                  if (newValue) {
                      this.setPrefillText(true, "", true);
                  } else if (newValue === false) {
                      this.setPrefillText(true, this._cfg.prefill, true);
                  }
              } else if (propertyName == "defaultErrorMessages") {
                  if (this.controller) {
                      this.controller.setDefaultErrorMessages(newValue);
                  }
              } else {
                  // delegate to parent class
                  this.$InputWithFrame._onBoundPropertyChange.apply(this, arguments);
              }
          }