anchor.diff:        fenceType = FenceType.TildeFence;
       }
   
  -    Parser infoStringParser = ((skipSpaces > (noneOf("\n\\ " + fenceChar) | escapedChar1 | char('\\')).many) <
  +    Parser infoStringParser = ((skipSpaces > (noneOf("&\n\\ " + fenceChar) | escapedChar1 | htmlEntity1 | oneOf('&\\')).many) <
         noneOf("\n" + fenceChar).many) < newline;
       Parser topFenceParser = (char(fenceChar).many + infoStringParser).list;
       ParseResult topFenceRes = topFenceParser.run(s, fenceStartRes.position);
  
positive.code: 
    static RegExp decimalEntity = new RegExp(r'^#(\d{1,8})$');
    static RegExp hexadecimalEntity = new RegExp(r'^#[xX]([0-9a-fA-F]{1,8})$');
    Parser get htmlEntity => ((char('&') >
        ((char('#').maybe + alphanum.many1) ^ (Option a, b) => (a.isDefined ? '#' : '') + b.join()) ) <
        char(';')) ^ (entity) {
      if (htmlEntities.containsKey(entity)) {
        return new Str(htmlEntities[entity]);
      }
  
      int code;
  
negative.code:   static final Parser whitespace = (spaceChar < skipSpaces) ^ (_) => [new Space()];
  
    // TODO better escaped chars support
    Parser escapedChar1 = (char('\\') > oneOf("!\"#\$%&'()*+,-./:;<=>?@[\\]^_`{|}~")) % "escaped char";
    Parser get escapedChar => escapedChar1 ^ (char) => [new Str(char)];
  
    //
  