anchor.diff:      var expressions = [first];
       while (true) {
         if (!_lookingAtExpression()) break;
  -      expressions.add(_spaceListOrExpression());
  +      expressions.add(_expressionUntilComma());
         if (!scanner.scanChar($comma)) break;
         whitespace();
       }
  
positive.code:           span: scanner.spanFrom(start));
      }
  
      var first = _spaceListOrExpression();
      if (scanner.scanChar($colon)) {
        whitespace();
        return _map(first, start);
  
negative.code:     expectIdentifier("from");
      whitespace();
      bool exclusive;
      var from = _expression(
          until: () {
            if (!lookingAtIdentifier()) return false;
            if (scanIdentifier("to")) {
              exclusive = true;
              return true;
            } else if (scanIdentifier("through")) {
              exclusive = false;
              return true;
            } else {
              return false;
            }
          },
          untilName: '"to" or "through"');
  
      whitespace();
      var to = _expression();
  