/// <summary>
        /// Combine combines a child with a parent as necessary and returns the combined object
        /// </summary>
        /// <param name="combinedMessages">The child object</param>
        /// <param name="parentMessages">The parent object</param>
        /// <returns>The combined object</returns>
        public static MiscellaneousPatternSet Combine(MiscellaneousPatternSet combinedMessages, MiscellaneousPatternSet parentMessages)
        {
            if (combinedMessages == null && parentMessages == null)
            {
                return(null);
            }
            else if (combinedMessages == null)
            {
                return((MiscellaneousPatternSet)parentMessages.Clone());
            }
            else if (parentMessages == null)
            {
                return(combinedMessages);
            }

            if (parentMessages.MiscellaneousPatterns != null)
            {
                List <MiscellaneousPattern> combinedMessagesList = new List <MiscellaneousPattern>(combinedMessages.MiscellaneousPatterns);

                foreach (MiscellaneousPattern parentMessage in parentMessages.MiscellaneousPatterns)
                {
                    if (!(from m in combinedMessages.MiscellaneousPatterns
                          where m.Id == parentMessage.Id
                          select m).Any())
                    {
                        combinedMessagesList.Add(parentMessage);
                    }
                }

                combinedMessages.MiscellaneousPatterns = combinedMessagesList.ToArray();
            }

            return(combinedMessages);
        }
        /// <summary>
        /// Combine combines a child with a parent as necessary and returns the combined object
        /// </summary>
        /// <param name="combinedMessages">The child object</param>
        /// <param name="parentMessages">The parent object</param>
        /// <returns>The combined object</returns>
        public static MiscellaneousPatternSet Combine(MiscellaneousPatternSet combinedMessages, MiscellaneousPatternSet parentMessages)
        {
            if (combinedMessages == null && parentMessages == null)
            {
                return null;
            }
            else if (combinedMessages == null)
            {
                return (MiscellaneousPatternSet)parentMessages.Clone();
            }
            else if (parentMessages == null)
            {
                return combinedMessages;
            }

            if (parentMessages.MiscellaneousPatterns != null)
            {
                List<MiscellaneousPattern> combinedMessagesList = new List<MiscellaneousPattern>(combinedMessages.MiscellaneousPatterns);

                foreach (MiscellaneousPattern parentMessage in parentMessages.MiscellaneousPatterns)
                {
                    if (!(from m in combinedMessages.MiscellaneousPatterns
                          where m.Id == parentMessage.Id
                          select m).Any())
                    {
                        combinedMessagesList.Add(parentMessage);
                    }
                }

                combinedMessages.MiscellaneousPatterns = combinedMessagesList.ToArray();
            }

            return combinedMessages;
        }