code: function(query, types, options, callback) {
      return WebApiRequest.builder(this.getAccessToken())
        .withPath('/v1/search/')
        .withQueryParameters(
          {
            type: types.join(','),
            q: query
          },
          options
        )
        .build()
        .execute(HttpManager.get, callback);
    }
docs: Search for music entities of certain types.
  @param {string} query The search query.
  @param {string[]} types An array of item types to search across.
  Valid types are: 'album', 'artist', 'playlist', and 'track'.
  @param {Object} [options] The possible options, e.g. limit, offset.
  @param {requestCallback} [callback] Optional callback method to be called instead of the promise.
  @example search('Abba', ['track', 'playlist'], { limit : 5, offset : 1 }).then(...)
  @returns {Promise|undefined} A promise that if successful, returns an object containing the
  search results. The result is paginated. If the promise is rejected,
  it contains an error object. Not returned if a callback is given.