void () { printContext(getDebugProcess().getDebuggerContext()); final StreamChain chain = ApplicationManager.getApplication().runReadAction((Computable<StreamChain>)() -> { final PsiElement elementAtBreakpoint = positionResolver.getNearestElementToBreakpoint(session); final List<StreamChain> chains = elementAtBreakpoint == null ? null : chainBuilder.build(elementAtBreakpoint); return chains == null || chains.isEmpty() ? null : chainSelector.select(chains); }); if (chain == null) { complete(null, null, null, FailureReason.CHAIN_CONSTRUCTION); return; } new EvaluateExpressionTracer(session, expressionBuilder, resultInterpreter).trace(chain, new TracingCallback() { @Override public void evaluated(@NotNull TracingResult result, @NotNull EvaluationContextImpl context) { complete(chain, result, null, null); } @Override public void evaluationFailed(@NotNull String traceExpression, @NotNull String message) { complete(chain, null, message, FailureReason.EVALUATION); } @Override public void compilationFailed(@NotNull String traceExpression, @NotNull String message) { LOG.warn("[" + getTestName(false) + "] Compilation failed."); complete(chain, null, message, FailureReason.COMPILATION); } }); }