anchor.diff:  _direct_ link, code snippet and one more paragraph that includes an 
   _indirect_ link. The URLs of indirect links are defined by a separate
   block as demonstrated on the last line (and they can then be easily used repeatedly
  -from multiple places in the documnet.
  +from multiple places in the document).
   
   Working with parsed documents
   -----------------------------
  
positive.code: The function `collectParLinks` processes paragraphs - a paragraph cannot directly be a 
  link so we just need to process all spans. This time, there are three options. 
  `ParagraphLeaf` represents a case where the paragraph does not contain any spans
  (a code block or e.g. `<hr>` line); the `ParagraphNested` case is used for paragraphs
  that contain ohter paragraphs (quotation) and `ParagraphSpans` is used for all other
  paragraphs that contain normal text - here we call `collectSpanLinks` on all nested spans.
  
  Generating HTML output
  ----------------------
  
  Finally, the `Markdown` type also includes method `WriteHtml` that can be used
  to generate HTML document from the Markdown input. The following example shows how to call it:
  *)
  let html = Markdown.WriteHtml(parsed)
  
  (**
  In addition, you can also use `Markdown.TransformHtml` to directly turn input document
  in the Markdown format into a HTML document (without the intermediate step).
  *)
  
negative.code: with the link.
  
  Some span nodes (like emphasis) can contain other formatting, so we need to recursively
  process children. This is done by matching against `Matching.SpanNodes` which is an active
  pattern that recognizes any node with children. The library also provides a _function_
  named `Matching.SpanNode` that can be used to reconstruct the same node (when you want
  to transform document). This is similar to how the `ExprShape` module for working with 
  