code: function(search, paramValue) {
      if (isUndefined(search))
        return this.$$search;
  
      if (isDefined(paramValue)) {
        if (paramValue === null) {
          delete this.$$search[search];
        } else {
          this.$$search[search] = paramValue;
        }
      } else {
        this.$$search = isString(search) ? parseKeyValue(search) : search;
      }
  
      this.$$compose();
      return this;
    }
docs: @ngdoc method
  @name ng.$location#search
  @methodOf ng.$location
  
  @description
  This method is getter / setter.
  
  Return search part (as object) of current url when called without any parameter.
  
  Change search part when called with parameter and return `$location`.
  
  @param {string|object<string,string>=} search New search params - string or hash object
  @param {string=} paramValue If `search` is a string, then `paramValue` will override only a
  single search parameter. If the value is `null`, the parameter will be deleted.
  
  @return {string} search