public void setTrace(@NotNull ResolvedTracingResult resolvedTrace, @NotNull EvaluationContextImpl context) {
    if (Disposer.isDisposed(myDisposable)) {
      return;
    }

    final ResolvedStreamChain chain = resolvedTrace.getResolvedChain();

    assert chain.length() == myTabContents.size();
    final List<TraceControllerImpl> controllers = createControllers(resolvedTrace);

    if (controllers.isEmpty()) return;
    final List<TraceElement> trace = controllers.get(0).getTrace();
    final CollectionTree tree = new CollectionTree(trace, context);
    final CollectionView sourceView = new CollectionView(tree);
    controllers.get(0).register(sourceView);
    myTabContents.get(0).setContent(sourceView, BorderLayout.CENTER);

    for (int i = 1; i < myTabContents.size(); i++) {
      if (i == myTabContents.size() - 1 &&
          (resolvedTrace.exceptionThrown() ||
           resolvedTrace.getSourceChain().getTerminationCall().getResultType().equals(JavaTypes.INSTANCE.getVOID()))) {
        break;
      }

      final MyPlaceholder tab = myTabContents.get(i);
      final TraceController previous = controllers.get(i - 1);
      final TraceController current = controllers.get(i);

      final StreamTracesMappingView view = new StreamTracesMappingView(context, previous, current);
      tab.setContent(view, BorderLayout.CENTER);
    }

    final TraceElement result = resolvedTrace.getResult();
    final MyPlaceholder resultTab = myTabContents.get(myTabContents.size() - 1);

    if (resolvedTrace.exceptionThrown()) {
      JBLabel label = new JBLabel(StreamDebuggerBundle.message("tab.content.exception.thrown"), SwingConstants.CENTER);
      resultTab.setContent(label, BorderLayout.CENTER);
      setTitle(StreamDebuggerBundle.message("stream.debugger.dialog.with.exception.title"));
      final ExceptionView exceptionView = new ExceptionView(context, result);
      Disposer.register(myDisposable, exceptionView);
      myTabsPane.insertTab(StreamDebuggerBundle.message("exception.tab.name"), AllIcons.Nodes.ErrorIntroduction, exceptionView, "", 0);
      myTabsPane.setSelectedIndex(0);
    }
    else if (resolvedTrace.getSourceChain().getTerminationCall().getResultType().equals(JavaTypes.INSTANCE.getVOID())) {
      JBLabel label = new JBLabel(StreamDebuggerBundle.message("tab.content.no.result"), SwingConstants.CENTER);
      resultTab.setContent(label, BorderLayout.CENTER);
    }

    final FlatView flatView = new FlatView(controllers, context);
    myFlatContent.setContent(flatView, BorderLayout.CENTER);
    myCenterPane.revalidate();
    myCenterPane.repaint();
  }
public void setTrace(@NotNull ResolvedTracingResult resolvedTrace, @NotNull EvaluationContextImpl context)