anchor.diff:    /// message based on the given [context]. Return the synthetic identifier that
     /// was inserted.
     Token insertSyntheticIdentifier(Token token, IdentifierContext context) {
  +    // TODO(brianwilkerson) Accept the last consumed token.
       Message message = context.recoveryTemplate.withArguments(token);
       Token identifier =
           new SyntheticStringToken(TokenType.IDENTIFIER, '', token.charOffset, 0);
  
positive.code:     // TODO(brianwilkerson) Accept the last consumed token.
      assert(optional('break', token));
      Token breakKeyword = token;
      token = token.next;
      bool hasTarget = false;
      if (token.isIdentifier) {
        token = ensureIdentifier(token, IdentifierContext.labelReference).next;
        hasTarget = true;
      }
      token = ensureSemicolon(token);
      listener.handleBreakStatement(hasTarget, breakKeyword, token);
      return token;
    }
  
negative.code:   }
  
    Token rewriteAndRecover(Token token, Message message, Token newToken) {
      // TODO(brianwilkerson) Accept the last consumed token.
      reportRecoverableError(token, message);
      return rewriter.insertToken(newToken, token);
    }
  