@Override
  public void initChildren() {
    clearChildren();
    TreeElement value = getValue();
    TreeElement[] children = value.getChildren();
    for (TreeElement child : children) {
      if (child == null) {
        LOG.error(value + " returned null child: " + Arrays.toString(children));
      }
      addSubElement(createChildNode(child));
    }
    if (myTreeModel instanceof ProvidingTreeModel) {
      Collection<NodeProvider<?>> originalProviders = ((ProvidingTreeModel)myTreeModel).getNodeProviders();
      Collection<NodeProvider<?>> providers = DumbService.getInstance(myProject).filterByDumbAwareness(originalProviders);
      for (NodeProvider<?> provider : providers) {
        if (((ProvidingTreeModel)myTreeModel).isEnabled(provider)) {
          Collection<TreeElement> nodes = (Collection<TreeElement>)provider.provideNodes(value);
          for (TreeElement node : nodes) {
            if (node == null) {
              LOG.error(provider + " returned null node: " + nodes);
            }
            addSubElement(createChildNode(node));
          }
        }
      }
    }
  }
@Override
  public void initChildren()