code: func (e *TraceErr) OrigError() error {
  	err := e.Err
  	// this is not an endless loop because I'm being
  	// paranoid, this is a safe protection against endless
  	// loops
  	for i := 0; i < maxHops; i++ {
  		newerr, ok := err.(Error)
  		if !ok {
  			break
  		}
  		if newerr.OrigError() != err {
  			err = newerr.OrigError()
  		}
  	}
  	return err
  }
docs: // OrigError returns original wrapped error