anchor.diff:        return lineRes.copy(value: new HtmlRawBlock(content));
       }
   
  -    Match match = rawHtmlTest67.matchAsPrefix(lineRes.value);
  -    if (match != null) {
  +    Match match = rawHtmlTest6.matchAsPrefix(lineRes.value);
  +    var position;
  +    if (match == null || !_allowedTags.contains(match.group(1).toLowerCase())) {
  +      // Trying rule 7
  +
  +      var rule7Res = ((skipNonindentChars < htmlOpenTag) < blankline).record.run(s, pos);
  +      if (!rule7Res.isSuccess) {
  +        return fail.run(s, pos);
  +      }
  +
  +      content = rule7Res.value;
  +      position = rule7Res.position;
  +    } else {
         content += lineRes.value + '\n';
  -      var position = lineRes.position;
  -      do {
  -        var blanklineRes = blankline.run(s, position);
  -        if (blanklineRes.isSuccess) {
  -          return success(new HtmlRawBlock(content)).run(s, blanklineRes.position);
  -        }
  -        lineRes = anyLine.run(s, position);
  -        if (!lineRes.isSuccess) {
  -          // eof
  -          return success(new HtmlRawBlock(content)).run(s, position);
  -        }
  -        content += lineRes.value + '\n';
  -        position = lineRes.position;
  -      } while(true);
  -
  -    }
  -
  -    return fail.run(s, pos);
  +      position = lineRes.position;
  +    }
  +
  +    do {
  +      var blanklineRes = blankline.run(s, position);
  +      if (blanklineRes.isSuccess) {
  +        return success(new HtmlRawBlock(content)).run(s, blanklineRes.position);
  +      }
  +      lineRes = anyLine.run(s, position);
  +      if (!lineRes.isSuccess) {
  +        // eof
  +        return success(new HtmlRawBlock(content)).run(s, position);
  +      }
  +      content += lineRes.value + '\n';
  +      position = lineRes.position;
  +    } while(true);
     });
   
   
  
positive.code:   //
  
    Parser get rawInlineHtml => choice([
        /*htmlInlineOpenTag,
        htmlInlineCloseTag,
        htmlCompleteComment,
        htmlCompletePI,
        htmlDeclaration,
        htmlCompleteCDATA*/
    ]) ^ (result) => [new HtmlRawInline(result)];
  
  
  
negative.code:   Parser get htmlCompletePI => (string('<?') > anyChar.manyUntil(string('?>'))).record;
    Parser get htmlDeclaration => (string('<!') + upper.many1 + spaceOrNL.many1 + anyChar.manyUntil(char('>'))).list.record;
    Parser get htmlCompleteCDATA => (string('<![CDATA[') > anyChar.manyUntil(string(']]>'))).record;
  
    //
    // Links aux parsers
  