@ApiStatus.Experimental
  protected @NotNull ExpressionEvaluator getEvaluator(EvaluationContextImpl evaluationContext) throws EvaluateException {
    SourcePosition position = ContextUtil.getSourcePosition(evaluationContext);
    return ReadAction.compute(() -> {
      PsiCodeFragment code = getEvaluationCode(evaluationContext);
      PsiElement psiContext = ContextUtil.getContextElement(evaluationContext, position);
      try {
        return DebuggerUtilsEx.findAppropriateCodeFragmentFactory(getEvaluationText(), psiContext).getEvaluatorBuilder().build(code, position);
      }
      catch (UnsupportedExpressionException ex) {
        ExpressionEvaluator eval = CompilingEvaluatorImpl.create(myProject, code.getContext(), element -> code);
        if (eval != null) {
          return eval;
        }
        throw ex;
      }
    });
  }
@ApiStatus.Experimental
  protected @NotNull ExpressionEvaluator getEvaluator(EvaluationContextImpl evaluationContext)