docs: function (args) {
                  var beanDef = args.beanDef;
                  var baseType = beanDef[this._MD_BASETYPE];
                  // $type can be missing if the bean was precompiled, with the onlyFastNorm option set to true
                  if (!this._options.checkEnabled || !beanDef.$type) {
                      if (this._options.addDefaults && beanDef.$fastNorm) {
                          args.dataHolder[args.dataName] = args.value = beanDef.$fastNorm(args.value);
                      }
                      return;
                  }
                  // default slow behaviour
                  if (args.value == null) {
                      if (beanDef.$mandatory) {
                          this._logError(this.MISSING_MANDATORY, [args.path, beanDef[this._MD_TYPENAME]]);
                      } else if ("$default" in beanDef && this._options.addDefaults) {
                          if (beanDef.$simpleCopyType) {
                              args.value = beanDef.$default;
                          } else {
                              args.value = jsonUtils.copy(beanDef.$default);
                          }
                          args.dataHolder[args.dataName] = args.value;
                      }
                  }
                  if (args.value != null && baseType.process) {
                      baseType.process(args);
                  }
              }