|  | package matchers | 
|  |  | 
|  | import ( | 
|  | "github.com/onsi/gomega/internal/oraclematcher" | 
|  | "github.com/onsi/gomega/types" | 
|  | ) | 
|  |  | 
|  | type NotMatcher struct { | 
|  | Matcher types.GomegaMatcher | 
|  | } | 
|  |  | 
|  | func (m *NotMatcher) Match(actual interface{}) (bool, error) { | 
|  | success, err := m.Matcher.Match(actual) | 
|  | if err != nil { | 
|  | return false, err | 
|  | } | 
|  | return !success, nil | 
|  | } | 
|  |  | 
|  | func (m *NotMatcher) FailureMessage(actual interface{}) (message string) { | 
|  | return m.Matcher.NegatedFailureMessage(actual) // works beautifully | 
|  | } | 
|  |  | 
|  | func (m *NotMatcher) NegatedFailureMessage(actual interface{}) (message string) { | 
|  | return m.Matcher.FailureMessage(actual) // works beautifully | 
|  | } | 
|  |  | 
|  | func (m *NotMatcher) MatchMayChangeInTheFuture(actual interface{}) bool { | 
|  | return oraclematcher.MatchMayChangeInTheFuture(m.Matcher, actual) // just return m.Matcher's value | 
|  | } |