Result (final char c, @NotNull final Project project, @NotNull final Editor editor, @NotNull final PsiFile file, @NotNull final FileType fileType) { if (!isJavaFile(file)) return Result.CONTINUE; if (c == '@') { autoPopupJavadocLookup(project, editor); } else if (c == '#' || c == '.') { autoPopupMemberLookup(project, editor); } int offsetBefore = editor.getCaretModel().getOffset(); //important to calculate before inserting charTyped myJavaLTTyped = '<' == c && !isJspFile(file) && CodeInsightSettings.getInstance().AUTOINSERT_PAIR_BRACKET && isLanguageLevel5OrHigher(file) && TypedHandlerUtil.isAfterClassLikeIdentifierOrDot(offsetBefore, editor, JavaTokenType.DOT, JavaTokenType.IDENTIFIER, true); if ('>' == c) { if (!isJspFile(file) && CodeInsightSettings.getInstance().AUTOINSERT_PAIR_BRACKET && isLanguageLevel5OrHigher(file)) { if (TypedHandlerUtil.handleGenericGT(editor, JavaTokenType.LT, JavaTokenType.GT, JavaTypingTokenSets.INVALID_INSIDE_REFERENCE)) { return Result.STOP; } } } if (c == '?') { if (handleQuestionMark(project, editor, file, offsetBefore)) { return Result.STOP; } } if (c == '=') { if (handleEquality(project, editor, file, offsetBefore)) { return Result.STOP; } } if (c == ';') { if (handleSemicolon(project, editor, file, fileType)) return Result.STOP; } if (fileType instanceof JavaFileType && c == '}