docs: function apply(t, m, a) {
      var l = a && a.length;
      if (!a || !l) {
        return m.call(t);
      }
      switch (l) {
        case 1:
          return m.call(t, a[0]);
        case 2:
          return m.call(t, a[0], a[1]);
        case 3:
          return m.call(t, a[0], a[1], a[2]);
        case 4:
          return m.call(t, a[0], a[1], a[2], a[3]);
        case 5:
          return m.call(t, a[0], a[1], a[2], a[3], a[4]);
        default:
          return m.apply(t, a);
      }
    }