func (e *Error) WithDetails(details ...proto.Message) *Error {
	if e == nil {
		return e
	}
	dup := *e
	dup.addDetails(details...)
	return &dup
}
WithDetails returns the error with the given details set.
This appends to any existing details in the Error.
package errors
import "github.com/golang/protobuf/proto"
type detailer interface {
	Details() []proto.Message
}
func (e *Error) addDetails(details ...proto.Message) {
	e.details = append(e.details, details...)
	if e.stack == nil {
		e.stack = callers(4)
	}
	e.clearGRPCStatus()
}