private MdNode GetInnerNodes() { var mdNode = new MdNode(currentMdTag); var tags = currentMdTag.GetInnerTags; var tagToPosition = new Dictionary <string, int>(); currentPosition += currentMdTag.TagName.Length; var innerTag = TagHelper.DetermineCurrentTag(sourceString, currentPosition, tags); tagToPosition.Add(innerTag.TagName, currentPosition); currentPosition += innerTag.TagName.Length; for (var i = currentPosition; i < sourceString.Length; i++) { if (tagToPosition.Count == 0 && currentMdTag.IsStartedPositionTagEnd(sourceString, i)) { currentPosition = i + currentMdTag.TagName.Length; return(mdNode); } if (tagToPosition.Count == 0) { innerTag = TagHelper.DetermineCurrentTag(sourceString, currentPosition, tags); tagToPosition.Add(innerTag.TagName, currentPosition); i += innerTag.TagName.Length; } if (innerTag.IsStartedPositionTagEnd(sourceString, i)) { AddInnerMdNode(tagToPosition, innerTag, i, mdNode); tagToPosition.Remove(innerTag.TagName); } } if (tagToPosition.Count != 0) { AddNotClosedInnerTag(tagToPosition, innerTag, mdNode); } currentPosition = sourceString.Length; return(mdNode); }