TextRange (@NotNull PsiJavaFile file) { PsiElement first = file.getFirstChild(); if (first instanceof PsiWhiteSpace) first = first.getNextSibling(); PsiElement element = first; while (element instanceof PsiComment) { if (element instanceof PsiDocComment && PsiTreeUtil.skipWhitespacesForward(element) instanceof PsiPackageStatement && PsiPackage.PACKAGE_INFO_FILE.equals(file.getName())) { break; } element = element.getNextSibling(); if (element instanceof PsiWhiteSpace) { element = element.getNextSibling(); } else { break; } } if (element == null) return null; PsiElement prevSibling = element.getPrevSibling(); if (prevSibling instanceof PsiWhiteSpace) element = prevSibling; if (element.equals(first)) return null; return new UnfairTextRange(first.getTextOffset(), element.getTextOffset()); }