func (e *Err) Error() string {
	switch {
	case e.Message_ == "" && e.Underlying_ == nil:
		return "<no error>"
	case e.Message_ == "":
		return e.Underlying_.Error()
	case e.Underlying_ == nil:
		return e.Message_
	}
	return fmt.Sprintf("%s: %v", e.Message_, e.Underlying_)
}
Error implements error.Error.
package errgo
import (
	"bytes"
	"fmt"
	"log"
	"runtime"
)
const debug = false
type Err struct {
	Message_ string
	Cause_ error
	Underlying_ error
	File string
	Line int
}
func (e *Err) Location() (file string, line int) {
	return e.File, e.Line
}
func (e *Err) Underlying() error {
	return e.Underlying_
}
func (e *Err) Cause() error {
	return e.Cause_
}
func (e *Err) Message() string {
	return e.Message_
}