/// <summary>
        /// Returns true if GroupItemDTO instances are equal
        /// </summary>
        /// <param name="input">Instance of GroupItemDTO to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(GroupItemDTO input)
        {
            if (input == null)
            {
                return(false);
            }

            return
                ((
                     Type == input.Type ||
                     (Type != null &&
                      Type.Equals(input.Type))
                     ) &&
                 (
                     Name == input.Name ||
                     (Name != null &&
                      Name.Equals(input.Name))
                 ) &&
                 (
                     Label == input.Label ||
                     (Label != null &&
                      Label.Equals(input.Label))
                 ) &&
                 (
                     Category == input.Category ||
                     (Category != null &&
                      Category.Equals(input.Category))
                 ) &&
                 (
                     Tags == input.Tags ||
                     Tags != null &&
                     Tags.SequenceEqual(input.Tags)
                 ) &&
                 (
                     GroupNames == input.GroupNames ||
                     GroupNames != null &&
                     GroupNames.SequenceEqual(input.GroupNames)
                 ) &&
                 (
                     GroupType == input.GroupType ||
                     (GroupType != null &&
                      GroupType.Equals(input.GroupType))
                 ) &&
                 (
                     Function == input.Function ||
                     (Function != null &&
                      Function.Equals(input.Function))
                 ));
        }
        /// <summary>
        /// Returns true if EnrichedItemDTO instances are equal
        /// </summary>
        /// <param name="input">Instance of EnrichedItemDTO to be compared</param>
        /// <returns>Boolean</returns>
        public bool Equals(EnrichedItemDTO input)
        {
            if (input == null)
            {
                return(false);
            }

            return
                ((
                     Type == input.Type ||
                     (Type != null &&
                      Type.Equals(input.Type))
                     ) &&
                 (
                     Name == input.Name ||
                     (Name != null &&
                      Name.Equals(input.Name))
                 ) &&
                 (
                     Label == input.Label ||
                     (Label != null &&
                      Label.Equals(input.Label))
                 ) &&
                 (
                     Category == input.Category ||
                     (Category != null &&
                      Category.Equals(input.Category))
                 ) &&
                 (
                     Tags == input.Tags ||
                     Tags != null &&
                     Tags.SequenceEqual(input.Tags)
                 ) &&
                 (
                     GroupNames == input.GroupNames ||
                     GroupNames != null &&
                     GroupNames.SequenceEqual(input.GroupNames)
                 ) &&
                 (
                     Link == input.Link ||
                     (Link != null &&
                      Link.Equals(input.Link))
                 ) &&
                 (
                     State == input.State ||
                     (State != null &&
                      State.Equals(input.State))
                 ) &&
                 (
                     TransformedState == input.TransformedState ||
                     (TransformedState != null &&
                      TransformedState.Equals(input.TransformedState))
                 ) &&
                 (
                     StateDescription == input.StateDescription ||
                     (StateDescription != null &&
                      StateDescription.Equals(input.StateDescription))
                 ) &&
                 (
                     CommandDescription == input.CommandDescription ||
                     (CommandDescription != null &&
                      CommandDescription.Equals(input.CommandDescription))
                 ) &&
                 (
                     Metadata == input.Metadata ||
                     Metadata != null &&
                     Metadata.SequenceEqual(input.Metadata)
                 ) &&
                 (
                     Editable == input.Editable ||
                     (Editable != null &&
                      Editable.Equals(input.Editable))
                 ));
        }