public IndexTokenNode Previous()
 {
     if (Node.Previous == null) return null;
     IndexToken previousToken = new IndexToken(IndexToken.StartIndex - Node.Previous.Value.Length, Node.Previous.Value);
     return new IndexTokenNode(previousToken, Node.Previous);
 }
 public IndexTokenNode Next()
 {
     if (Node.Next == null) return null;
     IndexToken nextToken = new IndexToken(IndexToken.StartIndex + IndexToken.Token.Length, Node.Next.Value);
     return new IndexTokenNode(nextToken, Node.Next);
 }
 public TokenChangedEventArgs(IndexToken indexToken)
 {
     _indexToken = indexToken;
 }
 public IndexTokenNode(IndexToken indexToken, LinkedListNode<Token> node)
 {
     _indexToken = indexToken;
     _node = node;
 }
 public MatchingBracePair(IndexToken start, IndexToken end)
 {
     _start = start;
     _end = end;
 }