@Override
      public @Nullable Icon getIcon(boolean open) {
        if (element == null) {
          return null;
        }

        Icon normal_icon = element.getIcon(0);
        if (myIcon != null) normal_icon = myIcon; // override normal
        if (myVisibility == Visibility.NORMAL) {
          return normal_icon;
        }
        else {
          LayeredIcon icon = new LayeredIcon(2);
          icon.setIcon(normal_icon, 0);
          Icon overlay = null;
          if (myVisibility == Visibility.PRIVATE || myVisibility == Visibility.PROTECTED) {
            overlay = PythonPsiApiIcons.Nodes.Lock;
          }
          else if (myVisibility == Visibility.PREDEFINED) {
            overlay = PythonPsiApiIcons.Nodes.CyanDot;
          }
          else if (myVisibility == Visibility.INVISIBLE) {
            overlay = PythonPsiApiIcons.Nodes.RedInvTriangle;
          }
          if (overlay != null) {
            icon.setIcon(overlay, 1);
          }
          return icon;
        }
      }
@Override
      public @Nullable Icon getIcon(boolean open)