private final Map<Matcher<? super Request>, Middleware> filters = new LinkedHashMap<Matcher<? super Request>, Middleware>();
public void handle(Request request, Response response) throws Exception {
Middleware filter = filterMappedTo(request);
filter.connectTo(successor);
filter.handle(request, response);
}
private Middleware filterMappedTo(Request request) {
Middleware bestMatch = new PassThrough();
for (Matcher<? super Request> requestMatcher : filters.keySet()) {