private void ProcessForOwner(MarkupChangeBehavior behavior, MarkupNodeReference currentFragmentNode, bool didExpand)
        {
            switch (behavior)
            {
            case MarkupChangeBehavior.None:
            default:
                // no-op
                break;

            case MarkupChangeBehavior.Invalidate:
                Invalidate(currentFragmentNode, didExpand);
                break;

            case MarkupChangeBehavior.Delete:
                MarkForRemoval(currentFragmentNode);
                break;
            }
        }
 public FragmentAndOffset(MarkupNodeReference node, int absoluteOffset)
 {
     Node  = node;
     Range = new Range(absoluteOffset, absoluteOffset + Node.Length);
 }
 private void MarkForRemoval(MarkupNodeReference value)
 {
     value.Status = MarkupNodeReference.NodeStatus.MarkedForRemoval;
 }
 private void Invalidate(MarkupNodeReference value, bool didExpand)
 {
     // TODO notify callers that this fragment needs to be updated
     value.Status = MarkupNodeReference.NodeStatus.NeedsRevalidation;
 }