/// <summary>
        /// The method that is called when an End element is encountered.
        /// </summary>
        /// <param name="reader">The XmlReader positioned at the EndElement.</param>
        private void HandleEndElement(XmlReader reader)
        {
            Debug.Assert(reader != null);

            EntityContainerAssociationSetEnd end = new EntityContainerAssociationSetEnd(this);

            end.Parse(reader);

            if (end.Role == null)
            {
                // we will resolve the role name later and put it in the
                // normal _relationshipEnds dictionary
                _rolelessEnds.Add(end);
                return;
            }

            if (HasEnd(end.Role))
            {
                end.AddError(ErrorCode.InvalidName, EdmSchemaErrorSeverity.Error, reader,
                             System.Data.Entity.Strings.DuplicateEndName(end.Name));
                return;
            }

            _relationshipEnds.Add(end.Role, end);
        }
        /// <summary>
        /// The method that is called when an End element is encountered.
        /// </summary>
        /// <param name="reader">The XmlReader positioned at the EndElement.</param>
        private void HandleEndElement(XmlReader reader)
        {
            Debug.Assert(reader != null);

            var end = new EntityContainerAssociationSetEnd(this);
            end.Parse(reader);

            if (end.Role == null)
            {
                // we will resolve the role name later and put it in the 
                // normal _relationshipEnds dictionary
                _rolelessEnds.Add(end);
                return;
            }

            if (HasEnd(end.Role))
            {
                end.AddError(
                    ErrorCode.InvalidName, EdmSchemaErrorSeverity.Error, reader,
                    Strings.DuplicateEndName(end.Name));
                return;
            }

            _relationshipEnds.Add(end.Role, end);
        }