private ExternalSystemNode<?> @NotNull [] buildChildren() {
    List<? extends ExternalSystemNode<?>> newChildrenCandidates = new ArrayList<ExternalSystemNode<?>>(doBuildChildren());
    if (newChildrenCandidates.isEmpty()) return NO_CHILDREN;

    addAll(newChildrenCandidates, true);
    sort(myChildrenList);
    List<ExternalSystemNode<?>> visibleNodes = new ArrayList<>();
    for (ExternalSystemNode<?> each : myChildrenList) {
      if (each.isVisible()) visibleNodes.add(each);
    }
    return visibleNodes.toArray(new ExternalSystemNode[0]);
  }
private ExternalSystemNode<?> @NotNull [] buildChildren()