package errors type UniverseError interface { Error() string Type() *UniverseErrorType Message() string Cause() error StackTrace() ErrorStack GetAny(key interface{}) any With(key interface{}, value any) UniverseError Builder() *UniverseErrorBuilder } type UniverseErrorImpl struct { msg string cause error t *UniverseErrorType stack ErrorStack fields map[interface{}]any } func (e *UniverseErrorImpl) Type() *UniverseErrorType { return e.t } func (e *UniverseErrorImpl) StackTrace() ErrorStack { return e.stack } func (e *UniverseErrorImpl) With(field interface{}, value any) UniverseError { if e.fields == nil { e.fields = map[interface{}]any{} } e.fields[field] = value return e } func (e *UniverseErrorImpl) Builder() *UniverseErrorBuilder { return &UniverseErrorBuilder{ t: e.t, message: e.msg, cause: e.cause, fields: e.fields, stack: e.stack, } } func (e *UniverseErrorImpl) Error() string { return ErrorToString(e) } func (e *UniverseErrorImpl) Unwrap() error { return e.cause } func (e *UniverseErrorImpl) Message() string { return e.msg } func (e *UniverseErrorImpl) Cause() error { return e.cause } func (e *UniverseErrorImpl) GetAny(field interface{}) any { if e.fields == nil { return nil } return e.fields[field] }