def exists(self, **kwargs):
        r"""Check for the existence of the ASM object on the BIG-IP

        Sends an HTTP GET to the URI of the ASM object and if it fails with
        a :exc:~requests.HTTPError` exception it checks the exception for
        status code of 404 and returns :obj:`False` in that case.

        If the GET is successful it returns :obj:`True`.

        For any other errors are raised as-is.

        Args:
            \*\*kwargs (dict): Arbitrary number of keyword arguments.
                Keyword arguments required to get objects

                If kwargs has a ``requests_param`` key the corresponding dict will
                be passed to the underlying ``requests.session.get`` method where it will
                be handled according to that API.

        Returns:
            bool: True is the object exists: False otherwise.

        Raises:
            requests.HTTPError: Any HTTP error that was not status code 404.
        """
        requests_params = self._handle_requests_params(kwargs)
        self._check_load_parameters(**kwargs)
        kwargs['uri_as_parts'] = True
        session = self._meta_data['bigip']._meta_data['icr_session']
        uri = self._meta_data['container']._meta_data['uri']
        endpoint = kwargs.pop('id', '')
        # Popping name kwarg as it will cause the uri to be invalid
        kwargs.pop('name', '')
        base_uri = uri + endpoint + '/'
        kwargs.update(requests_params)
        try:
            session.get(base_uri, **kwargs)
        except HTTPError as err:
            if err.response.status_code == 404:
                return False
            else:
                raise
        return True