// Returns the symbol offset within the TextContainer of this Position. internal static int GetSymbolOffset(TextContainer tree, TextTreeNode node, ElementEdge edge) { int offset; switch (edge) { case ElementEdge.BeforeStart: offset = node.GetSymbolOffset(tree.Generation); break; case ElementEdge.AfterStart: offset = node.GetSymbolOffset(tree.Generation) + 1; break; case ElementEdge.BeforeEnd: offset = node.GetSymbolOffset(tree.Generation) + node.SymbolCount - 1; break; case ElementEdge.AfterEnd: offset = node.GetSymbolOffset(tree.Generation) + node.SymbolCount; break; default: Invariant.Assert(false, "Unknown value for position edge"); offset = 0; break; } return offset; }