docs: def _process(self, request, result=None):
          """
          Process the rules for the request.
  
          :param request: The Request object provided by WebOb.
          :param result: The Result object to store the results in.  If
                         None, one will be allocated.
  
          :returns: A Result object, containing the selected version and
                    content type.
          """
  
          # Allocate a result and process all the rules
          result = result if result is not None else Result()
          self._proc_uri(request, result)
          self._proc_ctype_header(request, result)
          self._proc_accept_header(request, result)
  
          return result