anchor.diff:        return labelRes;
       }
       Inlines linkInlines = inlines.parse(labelRes.value);
  -    if (_isContainsLink(linkInlines)) {
  +    if (!allowInnerLink && _isContainsLink(linkInlines)) {
         List<Inline> resValue = [new Str('[')];
         resValue.addAll(linkInlines);
         resValue.add(new Str(']'));
  
positive.code:     return false;
    });
  
    Parser<List<Inline>> get link => new Parser((String s, Position pos) {
      ParseResult testRes = char('[').run(s, pos);
      if (!testRes.isSuccess) {
        return testRes;
  
negative.code:   });
  
    // TODO don't recreate objects. Move common part to separate parser
    Parser<List<Inline>> get image => (char('!') > link(true)) ^ (link) {
      // Transforming link to image
      if (link[0] is InlineLink) {
        return [new InlineImage(link[0].label, link[0].target)];
  