anchor.diff:        //
         if (_matches(TokenType.OPEN_SQUARE_BRACKET)) {
           wasOptionalParameter = true;
  -        if (leftSquareBracket != null && !reportedMuliplePositionalGroups) {
  +        if (leftSquareBracket != null && !reportedMultiplePositionalGroups) {
             _reportErrorForCurrentToken(
                 ParserErrorCode.MULTIPLE_POSITIONAL_PARAMETER_GROUPS);
  -          reportedMuliplePositionalGroups = true;
  +          reportedMultiplePositionalGroups = true;
           }
           if (leftCurlyBracket != null && !reportedMixedGroups) {
             _reportErrorForCurrentToken(ParserErrorCode.MIXED_PARAMETER_GROUPS);
             reportedMixedGroups = true;
           }
           leftSquareBracket = getAndAdvance();
  -        currentParameters = positionalParameters;
           kind = ParameterKind.POSITIONAL;
         } else if (_matches(TokenType.OPEN_CURLY_BRACKET)) {
           wasOptionalParameter = true;
  -        if (leftCurlyBracket != null && !reportedMulipleNamedGroups) {
  +        if (leftCurlyBracket != null && !reportedMultipleNamedGroups) {
             _reportErrorForCurrentToken(
                 ParserErrorCode.MULTIPLE_NAMED_PARAMETER_GROUPS);
  -          reportedMulipleNamedGroups = true;
  +          reportedMultipleNamedGroups = true;
           }
           if (leftSquareBracket != null && !reportedMixedGroups) {
             _reportErrorForCurrentToken(ParserErrorCode.MIXED_PARAMETER_GROUPS);
             reportedMixedGroups = true;
           }
           leftCurlyBracket = getAndAdvance();
  -        currentParameters = namedParameters;
           kind = ParameterKind.NAMED;
         }
         //
  
positive.code:    */
    CommentAndMetadata _parseCommentAndMetadata() {
      Comment comment = _parseDocumentationComment();
      List<Annotation> metadata = new List<Annotation>();
      while (_matches(TokenType.AT)) {
        metadata.add(parseAnnotation());
        Comment optionalComment = _parseDocumentationComment();
        if (optionalComment != null) {
          comment = optionalComment;
        }
      }
      return new CommentAndMetadata(comment, metadata);
    }
  
  
negative.code:       //
        FormalParameter parameter = _parseFormalParameter(kind);
        parameters.add(parameter);
        if (kind == ParameterKind.REQUIRED && wasOptionalParameter) {
          _reportErrorForNode(
              ParserErrorCode.NORMAL_BEFORE_OPTIONAL_PARAMETERS, parameter);
  