anchor.diff:        Token begin = token;
         // Recover from a bad factory method.
         reportRecoverableError(token, fasta.messageExpectedBody);
  -      token = parseExpression(token.next).next;
  +      token = parseExpression(token.next);
         if (!ofFunctionExpression) {
  -        token = ensureSemicolon(token);
  +        token = ensureSemicolon(token.next);
           listener.handleExpressionFunctionBody(begin, token);
         } else {
  +        token = token.next;
           listener.handleExpressionFunctionBody(begin, null);
         }
         return token;
  
positive.code:         token = token.next;
          break;
        }
        token = parseMapLiteralEntry(token);
        ++count;
      } while (optional(',', token));
      mayParseFunctionExpressions = old;
  
negative.code:     expect(':', colon);
      token = parseExpression(token.next);
      listener.endLiteralMapEntry(colon, token.next);
      return token;
    }
  
    Token parseSendOrFunctionLiteral(Token token, IdentifierContext context) {
  