ExecutionNode (long eventTime, String nodeId, ExecutionNode parentNode, String nodeName, @Nullable @BuildEventsNls.Hint String hint, @Nullable Supplier<? extends Icon> iconProvider, @Nullable Navigatable navigatable, Map<Object, ExecutionNode> nodesMap, Project project) { ExecutionNode node = nodesMap.get(nodeId); if (node == null) { node = new ExecutionNode(project, parentNode, false, this::isCorrectThread); node.setName(nodeName); if (hint != null) { node.setHint(hint); } node.setStartTime(eventTime); node.setEndTime(eventTime); if (iconProvider != null) { node.setIconProvider(iconProvider); } if (navigatable != null) { node.setNavigatable(navigatable); } parentNode.add(node); nodesMap.put(nodeId, node); } return node; }