seefor.go
func (c4 *Seefor) ServeHTTP(w http.ResponseWriter, req *http.Request) {
	started := time.Now()
	c4.handleBeforeMiddlewares(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
		beforeEnd := time.Now()
		if root, exist := c4.roots[req.Method]; exist {
			handler, params, route := root.match(req.URL.Path)
			if handler != nil {
				if c4.timer != nil {
					after := time.Now()
					c4.handleAfterMiddlewares(handler, w, req, params)
					c4.timer.Get(route).Accumulate(started, beforeEnd, after, time.Now())
				} else {
					c4.handleAfterMiddlewares(handler, w, req, params)
				}
				return
			}
		}
		c4.Router.handleMissing(w, req)
	}), w, req)
}
func (c4 *Seefor) ServeHTTP(w http.ResponseWriter, req *http.Request) {
	started := time.Now()
	c4.handleBeforeMiddlewares(http.HandlerFunc(func(w http.ResponseWriter, req *http.Request) {
		beforeEnd := time.Now()
		if root, exist := c4.roots[req.Method]; exist {
			handler, params, route := root.match(req.URL.Path)
			if handler != nil {
				if c4.timer != nil {
					after := time.Now()
					c4.handleAfterMiddlewares(handler, w, req, params)
					c4.timer.Get(route).Accumulate(started, beforeEnd, after, time.Now())
				} else {
					c4.handleAfterMiddlewares(handler, w, req, params)
				}
				return
			}
		}
		c4.Router.handleMissing(w, req)
	}), w, req)
}
// Implementing http handler interface.
// This is a override of Router.ServeHTTP for handling middlewares