docs: def suggest(self,
                  text,
                  location,
                  distance=2000,
                  category=None
                  ):
          """
          The suggest operation is performed on a geocode service resource.
          The result of this operation is a resource representing a list of
          suggested matches for the input text. This resource provides the
          matching text as well as a unique ID value, which links a
          suggestion to a specific place or address.
          A geocode service must meet the following requirements to support
          the suggest operation:
            The address locator from which the geocode service was published
            must support suggestions. Only address locators created using
            ArcGIS 10.3 for Desktop and later can support suggestions. See
            the Create Address Locator geoprocessing tool help topic for more
            information.
            The geocode service must have the Suggest capability enabled.
            Only geocode services published using ArcGIS 10.3 for Server or
            later support the Suggest capability.
          The suggest operation allows character-by-character auto-complete
          suggestions to be generated for user input in a client application.
          This capability facilitates the interactive search user experience
          by reducing the number of characters that need to be typed before
          a suggested match is obtained. A client application can provide a
          list of suggestions that is updated with each character typed by a
          user until the address they are looking for appears in the list.
  
          Inputs:
             text - The input text provided by a user that is used by the
              suggest operation to generate a list of possible matches. This
              is a required parameter.
             location -  Defines an origin point location that is used with
              the distance parameter to sort suggested candidates based on
              their proximity to the location. The distance parameter
              specifies the radial distance from the location in meters. The
              priority of candidates within this radius is boosted relative
              to those outside the radius.
              This is useful in mobile applications where a user wants to
              search for places in the vicinity of their current GPS
              location. It is also useful for web mapping applications where
              a user wants to find places within or near the map extent.
              The location parameter can be specified without specifying a
              distance. If distance is not specified, it defaults to 2000
              meters.
              The object can be an common.geometry.Point or X/Y list object
             distance - Specifies the radius around the point defined in the
              location parameter to create an area, which is used to boost
              the rank of suggested candidates so that candidates closest to
              the location are returned first. The distance value is in
              meters.
              If the distance parameter is specified, the location parameter
              must be specified as well.
              It is important to note that the location and distance
              parameters allow searches to extend beyond the specified search
              radius. They are not used to filter results, but rather to rank
              resulting candidates based on their distance from a location.
             category - The category parameter is only supported by geocode
              services published using StreetMap Premium locators.
          """
          params = {
              "f" : "json",
              "text" : text
          }
          url = self._url + "/suggest"
          if isinstance(location, Point):
              params['location'] = location.asDictionary
          elif isinstance(location, list):
              params['location'] = "%s,%s" % (location[0], location[1])
          else:
              raise Exception("Invalid location, please try again")
          if not category is None:
              params['category'] = category
          if not distance is None and \
             isinstance(distance, (int, float)):
              params['distance'] = distance
          return self._post(url=url,
                               param_dict=params,
                               securityHandler=self._securityHandler,
                               proxy_url=self._proxy_url,
                               proxy_port=self._proxy_port)