private CreoleRichTextElementProcessor(CreoleParserContext context, TokenRange <CreoleTokenCode> tokens, ICreoleRichTextElementDataIterator elementIterator)
 {
     _tokens  = tokens;
     Context  = context;
     _element = elementIterator;
     if (_element != null && _element.MoveNext())
     {
         _token      = _tokens.SubRange(_startIndex, (_element.Current.StartIndex - _startIndex)).GetEnumerator();
         _startIndex = _element.Current.EndIndex;
     }
     else
     {
         _element?.Dispose();
         _element    = null;
         _token      = _tokens.GetEnumerator();
         _startIndex = _tokens.Count;
     }
 }
 private void _MoveToNextElement()
 {
     if (_element.MoveNext())
     {
         if (_startIndex < _element.Current.StartIndex)
         {
             _token = _tokens.SubRange(_startIndex, (_element.Current.StartIndex - _startIndex)).GetEnumerator();
         }
         _index      = _startIndex;
         _startIndex = _element.Current.EndIndex;
     }
     else
     {
         _element.Dispose();
         _element    = null;
         _token      = _tokens.SubRange(_startIndex, (_tokens.Count - _startIndex)).GetEnumerator();
         _index      = _startIndex;
         _startIndex = _tokens.Count;
     }
 }