code: def resolve_handler(request, view_handlers):
      view = None
      if request._context:
          route_name = request._context[-1].route.name
          if route_name and VIEW_SEPARATOR in route_name:
              view = route_name.split(VIEW_SEPARATOR, 1)[1] or None
      if view not in view_handlers:
          raise NotFound
      method_handlers = view_handlers[view]
      verb = request.method
      if verb not in method_handlers:
          if verb == 'HEAD' and 'GET' in method_handlers:
              verb = 'GET'
          else:
              allowed_methods = set(method_handlers.keys())
              if 'HEAD' not in allowed_methods and 'GET' in allowed_methods:
                  allowed_methods.add('HEAD')
              allow = ', '.join(sorted(allowed_methods))
              raise MethodNotAllowed(allow=allow)
      handlers = method_handlers[verb]
      vary = set()
      if len(set(h.provides for h in handlers if h.provides is not None)) > 1:
          vary.add('Accept')
      if len(set(h.accepts for h in handlers)) > 1:
          vary.add('Content-Type')
      content_type = request.content_type
      if content_type:
          handlers = negotiate_content_type(content_type, handlers)
          if not handlers:
              raise UnsupportedMediaType
      accept = request.headers.get('Accept')
      if accept:
          handlers = negotiate_accept(accept, handlers)
          if not handlers:
              raise NotAcceptable
      return handlers[0], vary