@Override
  protected @Nullable PsiFile getPsiInner(@NotNull Language target) {
    if (target != getBaseLanguage()) {
      return null;
    }
    PsiFile file = myPsiFile;
    if (file == null) {
      file = createFile();
      if (file == null) {
        file = PsiUtilCore.NULL_PSI_FILE;
      }
      boolean set = myPsiFileUpdater.compareAndSet(this, null, file);
      if (!set && file != PsiUtilCore.NULL_PSI_FILE) {
        PsiFile alreadyCreated = myPsiFile;
        if (alreadyCreated == file) {
          LOG.error(this + ".createFile() must create new file instance but got the same: " + file);
        }
        if (file instanceof PsiFileEx) {
          PsiFile finalPsiFile = file;
          DebugUtil.performPsiModification("invalidating throw-away copy", () ->
            ((PsiFileEx)finalPsiFile).markInvalidated()
          );
        }
        file = alreadyCreated;
      }
    }
    return file == PsiUtilCore.NULL_PSI_FILE ? null : file;
  }
@Override
  protected @Nullable PsiFile getPsiInner(@NotNull Language target)