docs: function mergeOption(oldOption, newOption) {
      newOption = newOption || {};
  
      each(newOption, function (newCptOpt, mainType) {
          if (newCptOpt == null) {
              return;
          }
  
          var oldCptOpt = oldOption[mainType];
  
          if (!ComponentModel.hasClass(mainType)) {
              oldOption[mainType] = merge(oldCptOpt, newCptOpt, true);
          }
          else {
              newCptOpt = modelUtil.normalizeToArray(newCptOpt);
              oldCptOpt = modelUtil.normalizeToArray(oldCptOpt);
  
              var mapResult = modelUtil.mappingToExists(oldCptOpt, newCptOpt);
  
              oldOption[mainType] = map(mapResult, function (item) {
                  return (item.option && item.exist)
                      ? merge(item.exist, item.option, true)
                      : (item.exist || item.option);
              });
          }
      });
  }