boolean (@NotNull PsiBuilder builder) { assert builder.getTokenType() == JavaTokenType.CATCH_KEYWORD : builder.getTokenType(); PsiBuilder.Marker section = builder.mark(); builder.advanceLexer(); if (!expect(builder, JavaTokenType.LPARENTH)) { error(builder, JavaPsiBundle.message("expected.lparen")); done(section, myJavaElementTypeContainer.CATCH_SECTION, myWhiteSpaceAndCommentSetHolder); return false; } PsiBuilder.Marker param = myParser.getDeclarationParser().parseParameter(builder, false, true, false); if (param == null) { error(builder, JavaPsiBundle.message("expected.parameter")); } if (!expect(builder, JavaTokenType.RPARENTH)) { error(builder, JavaPsiBundle.message("expected.rparen")); done(section, myJavaElementTypeContainer.CATCH_SECTION, myWhiteSpaceAndCommentSetHolder); return false; } PsiBuilder.Marker body = parseCodeBlock(builder, true); if (body == null) { error(builder, JavaPsiBundle.message("expected.lbrace")); done(section, myJavaElementTypeContainer.CATCH_SECTION, myWhiteSpaceAndCommentSetHolder); return false; } done(section, myJavaElementTypeContainer.CATCH_SECTION, myWhiteSpaceAndCommentSetHolder); return true; }