static @Nullable ControlFlow forElement(@NotNull PsiElement psiBlock, @NotNull DfaValueFactory targetFactory) {
    PsiFile file = psiBlock.getContainingFile();
    DataFlowIRProvider provider = EP_NAME.forLanguage(file.getLanguage());
    if (provider == null) {
      return null;
    }
    ConcurrentHashMap<PsiElement, Optional<ControlFlow>> fileMap =
      CachedValuesManager.getCachedValue(file, () ->
        CachedValueProvider.Result.create(new ConcurrentHashMap<>(), PsiModificationTracker.MODIFICATION_COUNT));
    return fileMap.computeIfAbsent(psiBlock, psi -> {
      DfaValueFactory factory = new DfaValueFactory(file.getProject());
      ControlFlow flow = provider.createControlFlow(factory, psiBlock);
      return Optional.ofNullable(flow);
    }).map(flow -> new ControlFlow(flow, targetFactory)).orElse(null);
  }
static @Nullable ControlFlow forElement(@NotNull PsiElement psiBlock, @NotNull DfaValueFactory targetFactory)