anchor.diff:    //
   
     Parser get linkLabel => (char('[') >
  -      choice([whitespace, htmlEntity, inlineCode, rawInlineHtml, escapedChar, str]).manyUntil(char(']')).record) ^
  +      choice([whitespace, htmlEntity, inlineCode, rawInlineHtml, escapedChar, rec(() => linkLabel), str]).manyUntil(char(']')).record) ^
         (String label) => label.substring(0, label.length - 1);
   
     Parser get linkBalancedParenthesis => ((char("(") > (noneOf('&\\\n ()') | escapedChar1 | htmlEntity1 | oneOf('&\\')).many1) <
  
positive.code:             }
              continue;
            }
            res = inline.run(s, position);
            if (!res.isSuccess) {
              List<Inlines> ret = [new Str(char * 3)];
              if (leftToClose < 3) {
  
negative.code:       String reference = refRes.value == "" ? labelRes.value : refRes.value;
        String normalizedReference = _normalizeReference(reference);
        if (_references.containsKey(normalizedReference)) {
          return refRes.copy(value: [new ReferenceLink(reference, inlines(noLinks: true).parse(labelRes.value), _references[normalizedReference])]);
        }
      } else {
        String normalizedReference = _normalizeReference(labelRes.value);
        if (_references.containsKey(normalizedReference)) {
          return labelRes.copy(value: [new ReferenceLink(labelRes.value, inlines(noLinks: true).parse(labelRes.value), _references[normalizedReference])]);
        }
      }
  
  