| package matchers | 
 |  | 
 | import ( | 
 | 	"fmt" | 
 | 	"runtime" | 
 |  | 
 | 	"github.com/onsi/gomega/format" | 
 | ) | 
 |  | 
 | type BeIdenticalToMatcher struct { | 
 | 	Expected interface{} | 
 | } | 
 |  | 
 | func (matcher *BeIdenticalToMatcher) Match(actual interface{}) (success bool, matchErr error) { | 
 | 	if actual == nil && matcher.Expected == nil { | 
 | 		return false, fmt.Errorf("Refusing to compare <nil> to <nil>.\nBe explicit and use BeNil() instead.  This is to avoid mistakes where both sides of an assertion are erroneously uninitialized.") | 
 | 	} | 
 |  | 
 | 	defer func() { | 
 | 		if r := recover(); r != nil { | 
 | 			if _, ok := r.(runtime.Error); ok { | 
 | 				success = false | 
 | 				matchErr = nil | 
 | 			} | 
 | 		} | 
 | 	}() | 
 |  | 
 | 	return actual == matcher.Expected, nil | 
 | } | 
 |  | 
 | func (matcher *BeIdenticalToMatcher) FailureMessage(actual interface{}) string { | 
 | 	return format.Message(actual, "to be identical to", matcher.Expected) | 
 | } | 
 |  | 
 | func (matcher *BeIdenticalToMatcher) NegatedFailureMessage(actual interface{}) string { | 
 | 	return format.Message(actual, "not to be identical to", matcher.Expected) | 
 | } |