code: func NewError(msg interface{}) Error {
  	var err error
  
  	switch t := msg.(type) {
  	case Error:
  		return t
  	case error:
  		err = t
  	default:
  		err = fmt.Errorf("%v", t)
  	}
  
  	return Error{
  		err:     err,
  		Message: err.Error(),
  		Class:   reflect.TypeOf(err).String(),
  		Stack:   generateStack(3),
  	}
  }
docs: // NewError creates a new error instance