anchor.diff:  }
   
   class HttpRoute {
  -  final String pattern;
  +  final dynamic pattern;
     final HttpRequestHandler handler;
     final String method;
  +  final bool matchSubPaths;
     
  -  HttpRoute(this.pattern, this.handler, this.method);
  +  HttpRoute(this.pattern, this.handler, this.method, this.matchSubPaths);
   }
   
   typedef void HttpRequestHandler(HttpRequest request);
positive.code:     });
    }
    
    void addRoute(String pattern, HttpRequestHandler handler, {String method}) {
      var route = new HttpRoute(pattern, handler, method);
      routes.add(route);
    }
    
  
negative.code:     var path = request.uri.path;
      
      for (var route in routes) {
        var pattern = route.pattern;
        
        var matches = false;
        if (pattern is String) {
          matches = pattern == path;        
        } else if (pattern is RegExp) {
          matches = pattern.hasMatch(path);
        } else {
          throw new Exception("Invalid Pattern Type");
        }
        
        if (route.pattern.allMatches(path).isNotEmpty && (route.method != null ? route.method == request.method : true)) {
          route.handler(request);
          return;
        }
  