anchor.diff:      Token begin = next;
       int statementCount = 0;
       if (!optional('{', next)) {
  -      token = recoverFromMissingFunctionBody(token);
  +      token = ensureBlock(token, fasta.templateExpectedFunctionBody);
         listener.handleInvalidFunctionBody(token);
         return token.endGroup;
       }
  
positive.code:     Token begin = token = token.next;
      listener.beginClassBody(token);
      if (!optional('{', token)) {
        token = begin = recoverFromMissingClassBody(previousToken);
      }
      int count = 0;
      while (notEofOrValue('}', token.next)) {
  
negative.code:   }
  
    Token skipBlock(Token token) {
      token = ensureBlock(token, null);
      Token closeBrace = closeBraceTokenFor(token);
      if (closeBrace == null ||
          !identical(closeBrace.kind, $CLOSE_CURLY_BRACKET)) {
  