private void CreateUserTrackingLocations(XmlReader reader, UserTrackingLocationCollection user)
        {
            if (null == reader)
                throw new ArgumentNullException("reader");

            if (null == user)
                throw new ArgumentNullException("user");

            if (reader.IsEmptyElement)
                return;

            string startName = reader.Name;

            while (reader.Read())
            {
                switch (reader.NodeType)
                {
                    case XmlNodeType.Element:
                        if (0 == string.Compare(reader.Name, "UserTrackingLocation", StringComparison.Ordinal))
                        {
                            UserTrackingLocation location = new UserTrackingLocation();
                            CreateUserTrackingLocation(reader, location);
                            user.Add(location);
                        }
                        break;
                    case XmlNodeType.EndElement:
                        if (0 == string.Compare(startName, reader.Name, StringComparison.Ordinal))
                            return;
                        break;
                }
            }
            //
            // Only valid exit is on an EndElement that matches the element that is passed in.
            throw new TrackingProfileDeserializationException(ExecutionStringManager.TrackingDeserializationCloseElementNotFound + startName + ".");
        }
        private void CreateUserTrackingLocations(XmlReader reader, UserTrackingLocationCollection user)
        {
            if (reader == null)
            {
                throw new ArgumentNullException("reader");
            }
            if (user == null)
            {
                throw new ArgumentNullException("user");
            }
            if (!reader.IsEmptyElement)
            {
                string name = reader.Name;
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                        case XmlNodeType.Element:
                            if (string.Compare(reader.Name, "UserTrackingLocation", StringComparison.Ordinal) == 0)
                            {
                                UserTrackingLocation location = new UserTrackingLocation();
                                this.CreateUserTrackingLocation(reader, location);
                                user.Add(location);
                            }
                            break;

                        case XmlNodeType.EndElement:
                            goto Label_006A;
                    }
                    continue;
                Label_006A:
                    if (string.Compare(name, reader.Name, StringComparison.Ordinal) == 0)
                    {
                        return;
                    }
                }
                throw new TrackingProfileDeserializationException(ExecutionStringManager.TrackingDeserializationCloseElementNotFound + name + ".");
            }
        }