private void ReadEndElement()
        {
            int num3;

            base.BufferReader.SkipByte();
            XmlBaseReader.XmlElementNode elementNode = base.ElementNode;
            int nameOffset = elementNode.NameOffset;
            int nameLength = elementNode.NameLength;

            byte[] buffer = base.BufferReader.GetBuffer(nameLength, out num3);
            for (int i = 0; i < nameLength; i++)
            {
                if (buffer[num3 + i] != buffer[nameOffset + i])
                {
                    this.ReadQualifiedName(this.prefix, this.localName);
                    XmlExceptionHelper.ThrowTagMismatch(this, elementNode.Prefix.GetString(), elementNode.LocalName.GetString(), this.prefix.GetString(), this.localName.GetString());
                }
            }
            base.BufferReader.Advance(nameLength);
            if (base.BufferReader.GetByte() != 0x3e)
            {
                this.SkipWhitespace();
                if (base.BufferReader.GetByte() != 0x3e)
                {
                    XmlExceptionHelper.ThrowTokenExpected(this, ">", (char)base.BufferReader.GetByte());
                }
            }
            base.BufferReader.SkipByte();
            base.MoveToEndElement();
        }