code: func (wit WorkItemType) Equal(u convert.Equaler) bool {
  	other, ok := u.(WorkItemType)
  	if !ok {
  		return false
  	}
  	if wit.ID != other.ID {
  		return false
  	}
  	if !convert.CascadeEqual(wit.Lifecycle, other.Lifecycle) {
  		return false
  	}
  	if wit.Version != other.Version {
  		return false
  	}
  	if wit.Name != other.Name {
  		return false
  	}
  	if wit.Extends != other.Extends {
  		return false
  	}
  	if wit.CanConstruct != other.CanConstruct {
  		return false
  	}
  	if !reflect.DeepEqual(wit.Description, other.Description) {
  		return false
  	}
  	if wit.Icon != other.Icon {
  		return false
  	}
  	if wit.Path != other.Path {
  		return false
  	}
  	if len(wit.ChildTypeIDs) != len(other.ChildTypeIDs) {
  		return false
  	}
  	for i := range wit.ChildTypeIDs {
  		if wit.ChildTypeIDs[i] != other.ChildTypeIDs[i] {
  			return false
  		}
  	}
  	if len(wit.Fields) != len(other.Fields) {
  		return false
  	}
  	for witKey, witVal := range wit.Fields {
  		otherVal, keyFound := other.Fields[witKey]
  		if !keyFound {
  			return false
  		}
  		if !convert.CascadeEqual(witVal, otherVal) {
  			return false
  		}
  	}
  	if wit.SpaceTemplateID != other.SpaceTemplateID {
  		return false
  	}
  	return true
  }
docs: // Equal returns true if two WorkItemType objects are equal; otherwise false is returned.