@NotNull
  @Override
  public MultiMap<PsiExpression, PsiType> getControlFlowExpressionTypes(@NotNull PsiExpression forPlace, boolean honorAssignments) {
    PsiElement scope = DfaPsiUtil.getTopmostBlockInSameClass(forPlace);
    if (scope == null) {
      PsiFile file = forPlace.getContainingFile();
      if (!(file instanceof PsiCodeFragment)) {
        return MultiMap.empty();
      }
      scope = file;
    }

    GuessManagerRunner runner = new GuessManagerRunner(scope.getProject(), honorAssignments, null);

    var interceptor = new ExpressionTypeListener(runner, forPlace);
    RunnerResult result = runner.analyzeMethodWithInlining(scope, interceptor);
    if (result == RunnerResult.OK || result == RunnerResult.CANCELLED) {
      return interceptor.getResult();
    }
    return MultiMap.empty();
  }
@NotNull
  @Override
  public MultiMap<PsiExpression, PsiType> getControlFlowExpressionTypes(@NotNull PsiExpression forPlace, boolean honorAssignments)