// untested sections: 2packagematchersimport("fmt""reflect""github.com/onsi/gomega/format")typeBeEquivalentToMatcherstruct{Expectedinterface{}}func(matcher*BeEquivalentToMatcher)Match(actualinterface{})(successbool,errerror){ifactual==nil&&matcher.Expected==nil{returnfalse,fmt.Errorf("Both actual and expected must not be nil.")}convertedActual:=actualifactual!=nil&&matcher.Expected!=nil&&reflect.TypeOf(actual).ConvertibleTo(reflect.TypeOf(matcher.Expected)){convertedActual=reflect.ValueOf(actual).Convert(reflect.TypeOf(matcher.Expected)).Interface()}returnreflect.DeepEqual(convertedActual,matcher.Expected),nil}func(matcher*BeEquivalentToMatcher)FailureMessage(actualinterface{})(messagestring){returnformat.Message(actual,"to be equivalent to",matcher.Expected)}func(matcher*BeEquivalentToMatcher)NegatedFailureMessage(actualinterface{})(messagestring){returnformat.Message(actual,"not to be equivalent to",matcher.Expected)}