docs: function(){
          var n = arguments.length, handler, scope;
          switch(n) {
              case 0:
                  Xmla.Exception._newError(
                      "NO_EVENTS_SPECIFIED",
                      "Xmla.addListener",
                      null
                  )._throw();
              case 1:
                  var arg = arguments[0];
                  if (_isObj(arg)) {
                      var events;
                      if (_isArr(arg)) this._addListeners(arg)
                      else
                      if (events = arg.events || arg.event) {
                          if (_isStr(events)) events = (events === "all") ? Xmla.EVENT_ALL : events.split(",");
                          if (!(_isArr(events))){
                              Xmla.Exception._newError(
                                  "WRONG_EVENTS_FORMAT",
                                  "Xmla.addListener",
                                  arg
                              )._throw();
                          }
                          var i;
                          n = events.length;
                          for (i = 0; i < n; i++) this._addListener(events[i], arg);
                      }
                      else {
                          scope = arg.scope;
                          if (_isUnd(scope)) scope = null;
                          else delete arg.scope;
                          for (events in arg) {
                              handler = arg[events];
                              if (_isUnd(handler.scope)) handler.scope = scope;
                              this._addListener(events, handler);
                          }
                      }
                  }
                  else
                      Xmla.Exception._newError(
                          "WRONG_EVENTS_FORMAT",
                          "Xmla.addListener",
                          arg
                      )._throw();
                  break;
              case 2:
              case 3:
                  var event = arguments[0];
                  scope = arguments[2];
                  handler = arguments[1];
                  if (_isStr(event) && (_isFun(handler)||(_isObj(handler)))) this._addListener(event, handler, scope);
                  else {
                      var arr = [event, handler];
                      if (scope) arr.push(scope);
                      this.addListener(arr);
                  }
                  break;
              default:
                  this._addListeners(arguments);
          }
      }