InsertionContext (LookupElement item, PsiFile psiFile, List<? extends LookupElement> elements, Editor editor, final char completionChar) { OffsetMap offsetMap = new OffsetMap(editor.getDocument()); InsertionContext context = new InsertionContext(offsetMap, completionChar, elements.toArray(LookupElement.EMPTY_ARRAY), psiFile, editor, InsertionContext.shouldAddCompletionChar(completionChar)); context.setTailOffset(editor.getCaretModel().getOffset()); offsetMap.addOffset(CompletionInitializationContext.START_OFFSET, context.getTailOffset() - item.getLookupString().length()); offsetMap.addOffset(CompletionInitializationContext.SELECTION_END_OFFSET, context.getTailOffset()); offsetMap.addOffset(CompletionInitializationContext.IDENTIFIER_END_OFFSET, context.getTailOffset()); return context; }