docs: function (arg) {
              var inputField = this.getTextInputField();
              var text = inputField ? inputField.value : "";
              var value = null;
              var performCheckOnly = false;
  
              if (arg) {
                  text = (arg.text != null) ? arg.text : text;
                  value = arg.value;
                  performCheckOnly = arg.performCheckOnly;
              }
  
              if (!performCheckOnly && this._cfg.directOnBlurValidation) {
                  // reinitialize display
                  this.changeProperty("formatError", false);
              }
  
              var result = {
                  isValid : true,
                  report : null
              };
  
              if (!this.controller) {
                  // There's no controller so we assume the value to be valid
                  return result;
              }
  
              var hasErrors = (this._cfg.formatErrorMessages.length ? true : false);
              var report;
  
              if (value != null) {
                  report = this.controller.checkValue(value);
              } else {
                  report = this.controller.checkText(text, hasErrors);
              }
  
              if (!report) {
                  // No report means that the controller is handling the value asynchronously, consider it as valid
                  return result;
              }
  
              if (report.errorMessages.length) {
                  if (!performCheckOnly) {
                      this.changeProperty("value", null);
                      this.changeProperty("invalidText", text);
                  }
              } else if (this._cfg.formatError === false && ariaUtilsType.isArray(this._cfg.formatErrorMessages)
                      && this._cfg.formatErrorMessages.length) {
                  this.changeProperty("invalidText", null);
                  this.changeProperty("formatErrorMessages", []);
                  // setting invalid text to null means we might add helptext, this prevents any value to be applied
                  this.setHelpText(false);
              } else if (report.ok && !performCheckOnly) {
                  this.changeProperty("invalidText", null);
                  // If I get there there are no errors raised by this check, and there were no errors before, meaning the
                  // value is correct, no need to remove the helptext because it won't be set
              }
  
              if (performCheckOnly) {
                  return {
                      isValid : report.ok,
                      report : report
                  };
              } else {
                  this._reactToControllerReport(report, arg);
                  return;
              }
          }