GroupNode (@NotNull UsageGroup group, int ruleIndex, @NotNull Consumer<? super UsageViewImpl.NodeChange> edtModelToSwingNodeChangesQueue) { synchronized (this) { GroupNode newNode = new GroupNode(this, group, ruleIndex); int i = getNodeIndex(newNode, this.myChildren); if (i >= 0) { return (GroupNode)this.myChildren.get(i); } int insertionIndex = -i - 1; this.myChildren.add(insertionIndex, newNode); edtModelToSwingNodeChangesQueue.consume(new UsageViewImpl.NodeChange(UsageViewImpl.NodeChangeType.ADDED, this, newNode)); return newNode; } }