docs: function updateListeners (
  	  on,
  	  oldOn,
  	  add,
  	  remove$$1,
  	  vm
  	) {
  	  var name, cur, old, fn, event, capture;
  	  for (name in on) {
  	    cur = on[name];
  	    old = oldOn[name];
  	    if (!cur) {
  	      "development" !== 'production' && warn(
  	        "Invalid handler for event \"" + name + "\": got " + String(cur),
  	        vm
  	      );
  	    } else if (!old) {
  	      capture = name.charAt(0) === '!';
  	      event = capture ? name.slice(1) : name;
  	      if (Array.isArray(cur)) {
  	        add(event, (cur.invoker = arrInvoker(cur)), capture);
  	      } else {
  	        if (!cur.invoker) {
  	          fn = cur;
  	          cur = on[name] = {};
  	          cur.fn = fn;
  	          cur.invoker = fnInvoker(cur);
  	        }
  	        add(event, cur.invoker, capture);
  	      }
  	    } else if (cur !== old) {
  	      if (Array.isArray(old)) {
  	        old.length = cur.length;
  	        for (var i = 0; i < old.length; i++) { old[i] = cur[i]; }
  	        on[name] = old;
  	      } else {
  	        old.fn = cur;
  	        on[name] = old;
  	      }
  	    }
  	  }
  	  for (name in oldOn) {
  	    if (!on[name]) {
  	      event = name.charAt(0) === '!' ? name.slice(1) : name;
  	      remove$$1(event, oldOn[name].invoker);
  	    }
  	  }
  	}