private void parseField(MagpieParser parser, boolean isMutable, Map<String, Field> fields) { String name = parser.consume(TokenType.NAME).getString(); // Parse the pattern if there is one. Pattern pattern; if (parser.lookAhead(TokenType.EQUALS) || parser.lookAhead(TokenType.LINE)) { pattern = Pattern.wildcard(); } else { pattern = PatternParser.parse(parser); } // Parse the initializer if there is one. Expr initializer; if (parser.match(TokenType.EQUALS)) { initializer = parser.parseExpressionOrBlock(); } else { initializer = null; } fields.put(name, new Field(isMutable, initializer, pattern)); }