anchor.diff:      return fasta.messageMissingFunctionParameters;
     }
   
  +  /// ```
  +  /// normalFormalParameter:
  +  ///   functionFormalParameter |
  +  ///   fieldFormalParameter |
  +  ///   simpleFormalParameter
  +  /// ;
  +  ///
  +  /// functionFormalParameter:
  +  ///   metadata 'covariant'? returnType? identifier formalParameterList
  +  /// ;
  +  ///
  +  /// simpleFormalParameter:
  +  ///   metadata 'covariant'? finalConstVarOrType? identifier |
  +  /// ;
  +  ///
  +  /// fieldFormalParameter:
  +  ///   metadata finalConstVarOrType? 'this' '.' identifier formalParameterList?
  +  /// ;
  +  /// ```
     Token parseFormalParameter(
         Token token, FormalParameterKind parameterKind, MemberKind memberKind) {
       token = parseMetadataStar(token);
  
positive.code:     return token;
    }
  
    Token parseNewExpression(Token token) {
      Token newKeyword = token;
      token = expect('new', token);
      listener.beginNewExpression(newKeyword);
      token = parseConstructorReference(token);
      token = parseRequiredArguments(token);
      listener.endNewExpression(newKeyword);
      return token;
  
negative.code:     return token;
    }
  
    /// ```
    /// scriptTag:
    ///   '#!' (˜NEWLINE)* NEWLINE
    /// ;
    /// ```
    Token parseScript(Token token) {
      assert(identical(token.type, TokenType.SCRIPT_TAG));
      listener.handleScript(token);
      return token.next;
    }
  
    /// ```
    /// typeAlias:
    ///   metadata 'typedef' typeAliasBody
    /// ;
    ///
    /// typeAliasBody:
    ///   functionTypeAlias
    /// ;
    ///
    /// functionTypeAlias:
    ///   functionPrefix typeParameters? formalParameterList ‘;’
    /// ;
    ///
    /// functionPrefix:
    ///   returnType? identifier
    /// ;
    /// ```
    Token parseTypedef(Token token) {
      assert(optional('typedef', token));
      Token typedefKeyword = token;
      listener.beginFunctionTypeAlias(token);
      Token equals;
  