anchor.diff:    }
   
     /**
  +   * Parse a pattern. Return the pattern that was parsed.
  +   *
  +   *     pattern ::=
  +   *         literal
  +   */
  +  Pattern _parsePattern() {
  +  }
  +
  +  /**
      * Parse a postfix expression. Return the postfix expression that was parsed.
      *
      *     postfixExpression ::=
  
positive.code:     } else if (_matchesKeyword(Keyword.RETHROW)) {
        // TODO(brianwilkerson) Rethrow is a statement again.
        return _parseRethrowExpression();
      }
      //
      // assignableExpression is a subset of conditionalExpression, so we can
  
negative.code:     } finally {
        _inInitializer = wasInInitializer;
      }
    }
  
    /**
     * Parse a match expression. Return the expression that was parsed.
     *
     *     matchClause ::=
     *         pattern patternGuard? '=>' expressionStatement
     */
    MatchClause _parseMatchClause() {
      Pattern pattern = new Pattern(parseStringLiteral());
      Token fatArrow = _expect(TokenType.FUNCTION);
      ExpressionStatement armExpression = new ExpressionStatement(
          parseExpression2(), _expect(TokenType.SEMICOLON));
      return new MatchClause(pattern, null, fatArrow, armExpression);
    }
  
    /**
     * Parse a match expression. Return the expression that was parsed.
     *
     *     matchExpression ::=
     *         'match' '(' expression ')' '{' matchClause* '}'
     */
    MatchExpression _parseMatchExpression() {
      Token matchKeyword = _expectKeyword(Keyword.MATCH);
      Token leftParenthesis = _expect(TokenType.OPEN_PAREN);
      Expression expression = parseExpression2();
      Token rightParenthesis = _expect(TokenType.CLOSE_PAREN);
      Token leftBracket = _expect(TokenType.OPEN_CURLY_BRACKET);
      List<MatchClause> clauses = new List<MatchClause>();
      while (!_matches(TokenType.CLOSE_CURLY_BRACKET)) {
        clauses.add(_parseMatchClause());
      }
      return new MatchExpression(
          matchKeyword, leftParenthesis, expression, rightParenthesis, leftBracket, clauses, getAndAdvance());
    }
  
    /**
  