boolean (boolean optional) { if (myBuilder.getTokenType() != PyTokenTypes.IDENTIFIER) { if (optional) return true; myBuilder.error(PyParsingBundle.message("PARSE.expected.identifier")); return false; } SyntaxTreeBuilder.Marker marker = myBuilder.mark(); myBuilder.advanceLexer(); marker.done(getReferenceType()); while (myBuilder.getTokenType() == PyTokenTypes.DOT) { marker = marker.precede(); myBuilder.advanceLexer(); checkMatches(PyTokenTypes.IDENTIFIER, PyParsingBundle.message("PARSE.expected.identifier")); marker.done(getReferenceType()); } return true; }