void (OffsetsInFile offsets, int offset, PsiFile originalFile, PsiElement insertedElement) { PsiFile fileCopy = offsets.getFile(); if (insertedElement == null) { throw new RuntimeExceptionWithAttachments( "No element at insertion offset", "offset=" + offset, createFileTextAttachment(fileCopy, originalFile), createAstAttachment(fileCopy, originalFile)); } final TextRange range = insertedElement.getTextRange(); CharSequence fileCopyText = fileCopy.getViewProvider().getContents(); if ((range.getEndOffset() > fileCopyText.length()) || !isEquals(fileCopyText.subSequence(range.getStartOffset(), range.getEndOffset()), insertedElement.getNode().getChars())) { throw new RuntimeExceptionWithAttachments( "Inconsistent completion tree", "range=" + range + "; fileLength=" + fileCopyText.length(), createFileTextAttachment(fileCopy, originalFile), createAstAttachment(fileCopy, originalFile), new Attachment("Element at caret.txt", insertedElement.getText())); } }