void (@NotNull Project project, @NotNull ScratchFileCreationHelper.Context context, @NotNull DataContext dataContext) { if (context.language == null) return; ScratchFileCreationHelper handler = ScratchFileCreationHelper.EXTENSION.forLanguage(context.language); if (handler.prepareText(project, context, dataContext)) return; PsiFile psiFile = ScratchFileCreationHelper.parseHeader(project, context.language, context.text); PsiErrorElement firstError = SyntaxTraverser.psiTraverser(psiFile).traverse().filter(PsiErrorElement.class).first(); // heuristics: first error must not be right under the file PSI // otherwise let the user choose the language manually if (firstError != null && firstError.getParent() == psiFile) { context.language = null; } }