public override XmlParserContext TryRecreateState(XObject xobject, int position)
 {
     return
         (TagState.TryRecreateState(xobject, position)
          ?? ClosingTagState.TryRecreateState(xobject, position)
          ?? CommentState.TryRecreateState(xobject, position)
          ?? CDataState.TryRecreateState(xobject, position)
          ?? DocTypeState.TryRecreateState(xobject, position)
          ?? ProcessingInstructionState.TryRecreateState(xobject, position)
          ?? TextState.TryRecreateState(xobject, position)
          ?? new XmlParserContext {
         CurrentState = this,
         Position = xobject.Span.Start,
         PreviousState = Parent,
         CurrentStateLength = 0,
         KeywordBuilder = new System.Text.StringBuilder(),
         Nodes = NodeStack.FromParents(xobject),
         StateTag = FREE
     });
 }