code: func Recover(t Tracer, repanic bool, options *TraceOptions) {
  	if r := recover(); r != nil {
  		err, ok := r.(error)
  		if !ok {
  			// We use the runtime type of the error object for
  			// classification (and thus potential grouping);
  			// *bcd.PanicError is a more descriptive classifier
  			// than something like *errors.errorString.
  			err = &panicError{r}
  		}
  
  		Trace(t, err, options)
  
  		if repanic {
  			panic(r)
  		}
  	}
  }
docs: // Establishes a panic handler that will execute the specified Tracer in
  // response. If repanic is true, this will repanic again after Tracer execution
  // completes (with the original value returned by recover()).
  // This must be used with Go's defer, panic, and recover pattern; see
  // https://blog.golang.org/defer-panic-and-recover.