   #
   # inline
   # LINKS
+  # LINK REFERENCES
   #
 
   links:

          3: name: 'punctuation.md'
      }
    ]

  #
  # block
  # LINK REFERENCES
  #

  # TODO

  #
  # block

          4: name: 'punctuation.md'
      }

      # [foo][bar]
      {
        name: 'link.md'
        match: '((?:\\[)(?:[^\\]]*)(?:\\]))((?:\\[)(?:[^\\]]*)(?:\\]))'
        captures:
          1: patterns: [{ include: '#link-text' }]
          2: patterns: [{ include: '#link-label' }]
      }

      # [ref]: /uri "title"
      {
        name: 'reference.link.md'
        match: '((?:\\[)(?:[^\\]]*)(?:\\]))(:) ([^ [:cntrl:]]+) ((?:").*?(?:"))'
        captures:
          1: patterns: [{ include: '#link-label' }]
          2: name: 'punctuation.md'
          3: patterns: [{ include: '#link-destination' }]
          4: patterns: [{ include: '#link-title' }]
      }

      # [ref]: /uri
      {
        name: 'reference.link.md'
        match: '((?:\\[)(?:[^\\]]*)(?:\\]))(:) ([^ [:cntrl:]]+)'
        captures:
          1: patterns: [{ include: '#link-label' }]
          2: name: 'punctuation.md'
          3: patterns: [{ include: '#link-destination' }]
      }

    ]

  'link-destination':
    patterns: [
      {
        name: 'destination.link.md'
        match: '^(<)(.*)(>)$'
        captures:
          1: name: 'punctuation.md'
          2: name: 'uri.underline.markup.md'
          3: name: 'punctuation.md'
      }
      {
        name: 'destination.link.md'
        match: '(.+)'
        captures:
          1: name: 'uri.underline.markup.md'
      }
    ]

  'link-label':
    patterns: [
      {
        name: 'label.link.string.md'
        match: '^(\\[)(.*)(\\])$'
        captures:
          1: name: 'punctuation.md'
          3: name: 'punctuation.md'
      }
    ]

  'link-text':
