code: func BeforeAfterFilter(c *Controller, fc []Filter) {
  	defer func() {
  		if resultValue := beforeAfterFilterInvoke(FINALLY, c); resultValue != nil && !resultValue.IsNil() {
  			c.Result = resultValue.Interface().(Result)
  		}
  	}()
  	defer func() {
  		if err := recover(); err != nil {
  			if resultValue := beforeAfterFilterInvoke(PANIC, c); resultValue != nil && !resultValue.IsNil() {
  				c.Result = resultValue.Interface().(Result)
  			}
  			panic(err)
  		}
  	}()
  	if resultValue := beforeAfterFilterInvoke(BEFORE, c); resultValue != nil && !resultValue.IsNil() {
  		c.Result = resultValue.Interface().(Result)
  	}
  	fc[0](c, fc[1:])
  	if resultValue := beforeAfterFilterInvoke(AFTER, c); resultValue != nil && !resultValue.IsNil() {
  		c.Result = resultValue.Interface().(Result)
  	}
  }
docs: // Autocalls any defined before and after methods on the target controller
  // If either calls returns a value then the result is returned