code: func NewErrorClass(code string, status int) ErrorClass {
  	return func(message interface{}, keyvals ...interface{}) error {
  		var msg string
  		switch actual := message.(type) {
  		case string:
  			msg = actual
  		case error:
  			msg = actual.Error()
  		case fmt.Stringer:
  			msg = actual.String()
  		default:
  			msg = fmt.Sprintf("%v", actual)
  		}
  		var meta map[string]interface{}
  		l := len(keyvals)
  		if l > 0 {
  			meta = make(map[string]interface{})
  		}
  		for i := 0; i < l; i += 2 {
  			k := keyvals[i]
  			var v interface{} = "MISSING"
  			if i+1 < l {
  				v = keyvals[i+1]
  			}
  			meta[fmt.Sprintf("%v", k)] = v
  		}
  		return &ErrorResponse{ID: newErrorID(), Code: code, Status: status, Detail: msg, Meta: meta}
  	}
  }
docs: // NewErrorClass creates a new error class.
  // It is the responsibility of the client to guarantee uniqueness of code.