@Contract("_, _ -> new")
    private static @NotNull PropagateTree create(@NotNull Disposable parent, @NotNull List<TaintNode> roots) {
      TaintNode rootWrapper = new TaintNode(null, null, null, null, true) {
        @Override
        public List<TaintNode> calcChildren() {
          return roots;
        }
      };
      BaseTreeModel<TaintNode> propagateTreeModel = new PropagateTreeModel(rootWrapper);
      AsyncTreeModel treeModel = new AsyncTreeModel(propagateTreeModel, parent);
      PropagateTree tree = new PropagateTree(treeModel);
      tree.setRootVisible(false);
      tree.setShowsRootHandles(true);
      TreeUtil.installActions(tree);
      EditSourceOnDoubleClickHandler.install(tree);
      return tree;
    }
@Contract("_, _ -> new")
    private static @NotNull PropagateTree create(@NotNull Disposable parent, @NotNull List<TaintNode> roots)