public BracketLocator(TextReader reader)
            {
                string str;

                this.openBracketPositions  = new List <XamlDebuggerXmlReader.FilePosition>();
                this.closeBracketPositions = new List <XamlDebuggerXmlReader.FilePosition>();
                XamlDebuggerXmlReader.FilePosition item = new XamlDebuggerXmlReader.FilePosition(0, 0);
                this.openBracketPositions.Add(item);
                this.closeBracketPositions.Add(item);
                int line = 1;

                while ((str = reader.ReadLine()) != null)
                {
                    for (int i = 0; i < str.Length; i++)
                    {
                        if (str[i] == '<')
                        {
                            this.openBracketPositions.Add(new XamlDebuggerXmlReader.FilePosition(line, i + 1));
                        }
                        else if (str[i] == '>')
                        {
                            this.closeBracketPositions.Add(new XamlDebuggerXmlReader.FilePosition(line, i + 1));
                        }
                    }
                    line++;
                }
                item = new XamlDebuggerXmlReader.FilePosition(line, 1);
                this.openBracketPositions.Add(item);
                this.closeBracketPositions.Add(item);
            }
            private static XamlDebuggerXmlReader.FilePosition GetPositionBefore(List <XamlDebuggerXmlReader.FilePosition> positions, XamlDebuggerXmlReader.FilePosition beforeThis)
            {
                int num = positions.BinarySearch(beforeThis, XamlDebuggerXmlReader.FilePosition.Comparer);

                if (num < 0)
                {
                    num = ~num;
                }
                return(positions[num - 1]);
            }
            private static XamlDebuggerXmlReader.FilePosition GetPositionAfter(List <XamlDebuggerXmlReader.FilePosition> positions, XamlDebuggerXmlReader.FilePosition afterThis)
            {
                int num = positions.BinarySearch(afterThis, XamlDebuggerXmlReader.FilePosition.Comparer);

                if (num < 0)
                {
                    num = ~num;
                }
                else
                {
                    num++;
                }
                return(positions[num]);
            }
 public XamlDebuggerXmlReader.FilePosition FindOpenBracketBefore(XamlDebuggerXmlReader.FilePosition position)
 {
     return(GetPositionBefore(this.openBracketPositions, position));
 }
 public XamlDebuggerXmlReader.FilePosition FindCloseBracketAfter(XamlDebuggerXmlReader.FilePosition position)
 {
     return(GetPositionAfter(this.closeBracketPositions, position));
 }