public override bool Equals(object obj)
        {
            if (this == obj)
            {
                return(true);
            }
            if (obj == null)
            {
                return(false);
            }
            if (GetType() != obj.GetType())
            {
                return(false);
            }

            CorrelationSet other = (CorrelationSet)obj;

            /*return new EqualsBuilder().
             *              Append(clientApplications, other.getClientApplications()).
             *              isEquals();*/
            if (clientApplications.Equals(other.getClientApplications()))
            {
                return(true);
            }
            else
            {
                return(false);
            }
        }
	/// <exception cref="XMLStreamException"></exception>
	private Collection<CorrelationSet> readCorrelationSets(XmlReader xmlReader) {
		Collection<CorrelationSet> correlationSets = new Collection<CorrelationSet>();
		bool finished = false;
		
		CorrelationSet correlationSet = null;
		
		while(!finished && xmlReader.MoveToNextAttribute()) {
			//int Event = xmlReader.next();
			string name = XmlUtils.getElementQualifiedName(xmlReader, namespaces);
			
			switch(xmlReader.NodeType) {
				case XmlNodeType.Element:
					if("config:correlated-client-set".Equals(name)) {
						correlationSet = new CorrelationSet();
					} else if("config:client-application-name".Equals(name)) {
						correlationSet.getClientApplications().Add(xmlReader.ReadString().Trim());
					} else {
						/** unexpected start element **/
					}
					break;
				case XmlNodeType.EndElement:
					if("config:correlated-client-set".Equals(name)) {
						correlationSets.Add(correlationSet);
					} else if("config:correlation-config".Equals(name)) {
						finished = true;
					} else {
						/** unexpected end element **/
					}
					break;
				default:
					/** unused xml element - nothing to do **/
					break;
			}
		}
		
		return correlationSets;
	}