// Equal returns true if two WorkItemLinkType objects are equal; otherwise false is returned.
973306
func (t WorkItemLinkType) Equal(u convert.Equaler) bool {
	other, ok := u.(WorkItemLinkType)
	if !ok {
		return false
	}
	if t.ID != other.ID {
		return false
	}
	if t.Name != other.Name {
		return false
	}
	if t.Version != other.Version {
		return false
	}
	if !convert.CascadeEqual(t.Lifecycle, other.Lifecycle) {
		return false
	}
	if !reflect.DeepEqual(t.Description, other.Description) {
		return false
	}
	if !reflect.DeepEqual(t.ForwardDescription, other.ForwardDescription) {
		return false
	}
	if !reflect.DeepEqual(t.ReverseDescription, other.ReverseDescription) {
		return false
	}
	if t.Topology != other.Topology {
		return false
	}
	if t.ForwardName != other.ForwardName {
		return false
	}
	if t.ReverseName != other.ReverseName {
		return false
	}
	if t.SpaceTemplateID != other.SpaceTemplateID {
		return false
	}
	return true
}
663906
func (s String) Equal(other Argument) bool {
	if other.Typetag() != TypetagString {
		return false
	}
	s2 := other.(String)
	return s == s2
}
46641
func (v VersionsFile) Equal(a VersionsFile) bool {
	if len(v) != len(a) {
		return false
	}
	for ver, iid := range v {
		if a[ver] != iid {
			return false
		}
	}
	return true
}
1329289
func Equal(a, b string) bool {
	au, err := url.Parse(a)
	if err != nil {
		a = filepath.Clean(a)
		b = filepath.Clean(b)
		// If urls are paths, return true only if they are an exact match
		return a == b
	}
	bu, err := url.Parse(b)
	if err != nil {
		return false
	}

	for _, u := range []*url.URL{au, bu} {
		if u.Path == "" {
			u.Path = "/"
		}
		u.Path = filepath.Clean(u.Path)
	}
	return au.String() == bu.String()
}
1354444
func (m Material) Equal(a *Material) (isEqual bool, err error) {
	if m.Type != a.Type {
		return
	}

	return m.Attributes.equal(a.Attributes)
}
220377
func (s SpaceTemplate) Equal(u convert.Equaler) bool {
	other, ok := u.(SpaceTemplate)
	if !ok {
		return false
	}
	if !uuid.Equal(s.ID, other.ID) {
		return false
	}
	if s.Name != other.Name {
		return false
	}
	if s.Version != other.Version {
		return false
	}
	if !convert.CascadeEqual(s.Lifecycle, other.Lifecycle) {
		return false
	}
	if s.CanConstruct != other.CanConstruct {
		return false
	}
	if !reflect.DeepEqual(s.Description, other.Description) {
		return false
	}
	return true
}
1148363
func (e *Error) Equal(ie interface{}) bool {
	if ie == nil || e == nil || e.err == nil {
		return false
	}
	switch val := ie.(type) {
	case *Error:
		if val == nil {
			return false
		}
		if val.err == nil {
			return false
		}
		return e.err.Error() == val.String()
	case error:
		if val == nil {
			return false
		}
		return e.err.Error() == val.Error()
	case string:
		return e.err.Error() == val
	default:
		panic("invalid type")
	}
}
568354
func (o *FacetFiltersOption) Equal(o2 *FacetFiltersOption) bool {
	return o.comp.Equal(&o2.comp)
}
1124427
func (m ModuleInstance) Equal(o ModuleInstance) bool {
	return m.String() == o.String()
}
959799
func (o *AroundLatLngOption) Equal(o2 *AroundLatLngOption) bool {
	if o2 == nil {
		return o.value == ""
	}
	return o.value == o2.value
}
896736
func (p *JsonPath) Equal(o JsonPath) bool {
	if len(*p) != len(o) {
		return false
	}
	for i, v := range *p {
		if v != o[i] {
			return false
		}
	}
	return true
}
993700
func (c *Cluster) Equal(other *Cluster) bool {
	return reflect.DeepEqual(c, other)
}
494811
func (o *MinWordSizefor2TyposOption) Equal(o2 *MinWordSizefor2TyposOption) bool {
	if o2 == nil {
		return o.value == 8
	}
	return o.value == o2.value
}
794574
func Equal(a, b interface{}) bool {
	if a == nil && b == nil {
		return a == b
	}

	return reflect.DeepEqual(a, b)
}
504390
func (t ListType) Equal(u convert.Equaler) bool {
	other, ok := u.(ListType)
	if !ok {
		return false
	}
	if !convert.CascadeEqual(t.SimpleType, other.SimpleType) {
		return false
	}
	if !reflect.DeepEqual(t.DefaultValue, other.DefaultValue) {
		return false
	}
	return convert.CascadeEqual(t.ComponentType, other.ComponentType)
}
531766
func (m *Into) Equal(t Task) bool {
	if m == nil && t == nil {
		return true
	}
	if m == nil && t != nil {
		return false
	}
	if m != nil && t == nil {
		return false
	}
	s, ok := t.(*Into)
	if !ok {
		return false
	}

	if !m.PlanBase.EqualBase(s.PlanBase) {
		return false
	}
	return true
}
96756
func (a *AttributeTypeAndValue) Equal(other *AttributeTypeAndValue) bool {
	return strings.EqualFold(a.Type, other.Type) && a.Value == other.Value
}