@Override
  @NotNull
  public ItemPresentation getPresentation() {
    return new TextAttributesPresentation() {

      @Nullable
      @Override
      public TextAttributesKey getTextAttributesKey() {
        return (getPresentableName() != null && getPresentableName().isEmpty()) ? GROUP_KEY : null;
      }

      @Override
      public String getPresentableText() {
        IProperty property = getProperty();
        if (property == null) return null;
        String presentableName = getPresentableName();
        if (presentableName == null) {
          return property.getName();
        }
        return !presentableName.isEmpty() ? presentableName 
                                          : PropertiesBundle.message("structure.view.empty.property.presentation");
      }

      @Override
      public Icon getIcon(boolean open) {
        return myProperty.getIcon(0);
      }

      @Override
      public TextAttributes getTextAttributes(EditorColorsScheme colorsScheme) {
        final TextAttributesKey baseAttrKey = (getPresentableName() != null && getPresentableName().isEmpty())
          ? GROUP_KEY
          : PropertiesHighlighter.PropertiesComponent.PROPERTY_KEY.getTextAttributesKey();
        final TextAttributes baseAttrs = colorsScheme.getAttributes(baseAttrKey);
        if (getPsiElement() != null) {
          TextAttributes highlightingAttributes = getErrorTextAttributes(colorsScheme);
          if (highlightingAttributes != null) {
            return TextAttributes.merge(baseAttrs, highlightingAttributes);
          }
        }
        return baseAttrs;
      }
    };
  }
@Override
  @NotNull
  public ItemPresentation getPresentation()