def match(self, request, *, root=None, path=None, methods=None):
        """Return match or None for the request/constraints pair.

        Parameters
        ----------
        request: :class:`.http.Request`
            Request instance.
        root: str
            HTTP path root.
        path: str
            HTTP path.
        methods: list
            HTTP methods.

        Returns
        -------
        :class:`.Match`/None
            Match instance (True) or None (False).
        """
        match = Match()
        if path is not None:
            pattern = self.__get_pattern(path)
            match = pattern.match(request.path)
        elif root is not None:
            pattern = self.__get_pattern(root)
            match = pattern.match(request.path, left=True)
        if not match:
            return None
        if methods:
            methods = map(str.upper, methods)
            if request.method not in methods:
                return None
        return match