docs: function search(O, _fn) {
              if (isNothing(O)) return -1;
              if (isObject(O)) {
                  for (var key in O) {
                      if (typeof O[key] != "undefined" && isFunction(_fn) && _fn.call(O[key], key, O[key])) {
                          return key;
                          break;
                      } else if (O[key] == _fn) {
                          return key;
                          break;
                      }
                  }
              } else {
                  for (var i = 0, l = O.length; i < l; i++) {
                      if (typeof O[i] != "undefined" && isFunction(_fn) && _fn.call(O[i], i, O[i])) {
                          return i;
                          break;
                      } else if (O[i] == _fn) {
                          return i;
                          break;
                      }
                  }
              }
              return -1;
          }