docs: function (Vue) {
    var ref = Vue.util;
    var looseEqual = ref.looseEqual;
  
    var MultiElement = function MultiElement (vm) {
      // TODO: should be checked whether included radio or checkbox
      this._vm = vm;
      this.initValue = this.getValue();
      this.attachValidity();
    };
  
    MultiElement.prototype.attachValidity = function attachValidity () {
        var this$1 = this;
  
      this._vm.$el.$validity = this._vm;
      this._eachItems(function (item) {
        item.$validity = this$1._vm;
      });
    };
  
    MultiElement.prototype.getValue = function getValue () {
      return this._getCheckedValue()
    };
  
    MultiElement.prototype.checkModified = function checkModified () {
      return !looseEqual(this.initValue, this._getCheckedValue())
    };
  
    MultiElement.prototype.listenToucheableEvent = function listenToucheableEvent () {
        var this$1 = this;
  
      this._eachItems(function (item) {
        item.addEventListener('focusout', this$1._vm.willUpdateTouched);
      });
    };
  
    MultiElement.prototype.unlistenToucheableEvent = function unlistenToucheableEvent () {
        var this$1 = this;
  
      this._eachItems(function (item) {
        item.removeEventListener('focusout', this$1._vm.willUpdateTouched);
      });
    };
  
    MultiElement.prototype.listenInputableEvent = function listenInputableEvent () {
        var this$1 = this;
  
      this._eachItems(function (item) {
        item.addEventListener('change', this$1._vm.handleInputable);
      });
    };
  
    MultiElement.prototype.unlistenInputableEvent = function unlistenInputableEvent () {
        var this$1 = this;
  
      this._eachItems(function (item) {
        item.removeEventListener('change', this$1._vm.handleInputable);
      });
    };
  
    MultiElement.prototype._getCheckedValue = function _getCheckedValue () {
      var value = [];
      this._eachItems(function (item) {
        if (!item.disabled && item.checked) {
          value.push(item.value);
        }
      });
      return value
    };
  
    MultiElement.prototype._getItems = function _getItems () {
      return this._vm.$el.querySelectorAll('input[type="checkbox"], input[type="radio"]')
    };
  
    MultiElement.prototype._eachItems = function _eachItems (cb) {
      var items = this._getItems();
      for (var i = 0; i < items.length; i++) {
        cb(items[i]);
      }
    };
  
    return MultiElement
  }