Tries to match a request with a set of routes.
If the matcher can not find information, it must throw one of the exceptions documented below.
Request $request The request to match:
array An array of parameters
ResourceNotFoundException If no matching resource could be found
MethodNotAllowedException If a matching resource was found but the request method is not allowed
Overrides RequestMatcherInterface::matchRequest
public function matchRequest(Request $request) {
  $collection = $this->routeProvider
    ->getRouteCollectionForRequest($request);
  if (!count($collection)) {
    throw new ResourceNotFoundException();
  }
  // Route Filters are expected to throw an exception themselves if they
  // end up filtering the list down to 0.
  foreach ($this
    ->getRouteFilters() as $filter) {
    $collection = $filter
      ->filter($collection, $request);
  }
  $attributes = $this->finalMatcher
    ->finalMatch($collection, $request);
  return $attributes;
}