# simple recover
running panic...
recovering...
recovered: panic

# recover with result
running panic...
recovered: panic
result: 3

# nested defer frame
deferred nested function
recovered: panic

# nested panic: panic inside recover
recovered 1: panic
recovered 2: foo

# panic inside defer
recovered: panic

# panic replace
panic 1
panic 2
recovered: panic 2

# defer panic
defer panic
recovered from deferred call: deferred panic

# indirect recover
indirect recover returned: indirect panic

# runtime.Goexit
Goexit deferred function, recover is nil: true

# repanic
inner, repanicking
outer recovered: repanic value

# recover runtime errors
  recovered: index
  recovered: index from helper
  recovered: slice
  recovered: type assert
  recovered: empty interface type assert

# recover from nil map and closed channel
  recovered: nil map
  recovered: closed chan
  recovered: close nil chan

# recover from hardware signals
  recovered: divide by zero
  recovered: nil pointer dereference
