anchor.diff:      }
       String markerChar = testRes.value;
   
  -    return (list(string(markerChar + " ")) ^ (items) {
  +    return (list((char(markerChar) > (char(' ') | char('\n').lookAhead)).record) ^ (items) {
         BulletType type;
         switch(markerChar) {
           case '+':
  
positive.code:   // Lists
    //
  
    static Parser get unorderedListMarkerTest => ((skipNonindentSpaces.notFollowedBy(hrule) > oneOf('-+*')) < char(' '));
    static Parser get orderedListMarkerTest => ((skipNonindentSpaces > digit.many1) + (oneOf('.)') < char(' '))).list;
    static Parser listFirstLine(int indent, Parser marker) => (atMostSpaces(indent).notFollowedBy(hrule) + marker + anyLine).list;
    static Parser listStrictLine(int indent) => string(" " * indent) > anyLine;
    static Parser get listLazyLine => skipNonindentSpaces > anyLine;
    static Parser listLine(int indent, Parser marker) => // There are three types of lines in list
      (listFirstLine(indent - 1, marker) ^ (l) => [0,  l[0], l[1], l[2]]) // List item start
      | (blankline ^ (l) => [3])                                          // Blank line
      | (listStrictLine(indent) ^ (l) => [1, l])                          // List item strict continuation
      | (listLazyLine ^ (l) => [2, l]);                                   // List item lazy continuation
  
  
    Parser list(Parser marker) => new Parser((s, pos) {
  
negative.code:     int startIndex = num.parse(testRes.value[0].join());
      String indexSeparator = testRes.value[1];
  
      return (list(((digit.many1 > char(indexSeparator)) > (char(' ') | char('\n').lookAhead)).record) ^ (items) {
        IndexSeparator separator;
        switch(indexSeparator) {
          case '.':
  