anchor.diff:      var expressions = [first];
       while (true) {
         if (!_lookingAtExpression()) break;
  -      expressions.add(_spaceListOrExpression());
  +      expressions.add(_expressionUntilComma());
         if (!scanner.scanChar($comma)) break;
         whitespace();
       }
  
positive.code:   }
  
    MapExpression _map(Expression first, LineScannerState start) {
      var pairs = [new Pair(first, _spaceListOrExpression())];
  
      while (scanner.scanChar($comma)) {
        whitespace();
        if (!_lookingAtExpression()) break;
  
        var key = _spaceListOrExpression();
        scanner.expectChar($colon);
        whitespace();
        var value = _spaceListOrExpression();
        pairs.add(new Pair(key, value));
      }
  
      scanner.expectChar($rparen);
      return new MapExpression(pairs, scanner.spanFrom(start));
    }
  
    UnaryOperationExpression _unaryOperation() {
  
negative.code:           span: scanner.spanFrom(start));
      }
  
      var first = _expressionUntilComma();
      if (scanner.scanChar($colon)) {
        whitespace();
        return _map(first, start);
  