private boolean customize(Object value) {
   final Object userObject = ((DefaultMutableTreeNode) value).getUserObject();
   if (!(userObject instanceof TreeElementWrapper)) {
     return false;
   }
   final TreeElement treeElement = ((TreeElementWrapper) userObject).getValue();
   if (treeElement == null) {
     return false;
   }
   final ItemPresentation presentation = treeElement.getPresentation();
   if (presentation instanceof TextAttributesPresentation) {
     final TextAttributesPresentation textAttributesPresentation =
         (TextAttributesPresentation) presentation;
     final String text = textAttributesPresentation.getPresentableText();
     if (text != null) {
       final SimpleTextAttributes attr =
           SimpleTextAttributes.fromTextAttributes(
               textAttributesPresentation.getTextAttributes(getColorsScheme()));
       append(
           text,
           new SimpleTextAttributes(
               attr.getBgColor(),
               attr.getFgColor(),
               attr.getWaveColor(),
               attr.getStyle() | SimpleTextAttributes.STYLE_OPAQUE));
       return true;
     }
   }
   return false;
 }
  private void setStructureViewSelection(@NotNull final String propertyName) {
    if (myStructureViewComponent.isDisposed()) {
      return;
    }
    JTree tree = myStructureViewComponent.getTree();
    if (tree == null) {
      return;
    }

    Object root = tree.getModel().getRoot();
    if (AbstractTreeUi.isLoadingChildrenFor(root)) {
      mySelectionChangeAlarm.cancelAllRequests();
      mySelectionChangeAlarm.addRequest(
          new Runnable() {
            @Override
            public void run() {
              mySelectionChangeAlarm.cancelAllRequests();
              setStructureViewSelection(propertyName);
            }
          },
          500);
      return;
    }

    Stack<TreeElement> toCheck = ContainerUtilRt.newStack();
    toCheck.push(myStructureViewComponent.getTreeModel().getRoot());

    while (!toCheck.isEmpty()) {
      TreeElement element = toCheck.pop();
      PsiElement value =
          element instanceof ResourceBundlePropertyStructureViewElement
              ? ((ResourceBundlePropertyStructureViewElement) element).getValue()
              : null;
      if (value instanceof IProperty
          && propertyName.equals(((IProperty) value).getUnescapedKey())) {
        myStructureViewComponent.select(value, true);
        selectionChanged();
        return;
      } else {
        for (TreeElement treeElement : element.getChildren()) {
          toCheck.push(treeElement);
        }
      }
    }
  }