anchor.diff:    /// message based on the given [context]. Return the synthetic identifier that
     /// was inserted.
     Token insertSyntheticIdentifier(Token token, IdentifierContext context,
  -      [String stringValue = '']) {
  +      [String stringValue]) {
       // TODO(brianwilkerson) Accept the last consumed token.
  +    stringValue ??= '';
       Message message = context.recoveryTemplate.withArguments(token);
       Token identifier = new SyntheticStringToken(
           TokenType.IDENTIFIER, stringValue, token.charOffset, 0);
  
positive.code:           // Supply a non-empty method name so that it does not accidently
            // match the default constructor.
            token = insertSyntheticIdentifier(
                token, context, '\$_synthetic_method_name_${token.offset}');
          } else if (context == IdentifierContext.topLevelVariableDeclaration ||
              context == IdentifierContext.fieldDeclaration) {
            // Since the token is not a keyword or identifier,
  
negative.code:         token = next;
          break;
        }
        token = parseFormalParameter(
                token, FormalParameterKind.optionalPositional, kind)
            .next;
        ++parameterCount;
      } while (optional(',', token));
      if (parameterCount == 0) {
  