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(); }