private void addProperties(@NotNull String prefix, @NotNull Object component, @NotNull List<String> methodNames) {
    Class<?> clazz = component.getClass();
    myProperties.add(new PropertyBean(prefix + "class", clazz.getName() + "@" + System.identityHashCode(component)));

    if (clazz.isAnonymousClass()) {
      Class<?> superClass = clazz.getSuperclass();
      if (superClass != null) {
        myProperties.add(new PropertyBean(prefix + "superclass", superClass.getName(), true));
      }
    }

    Class<?> declaringClass = clazz.getDeclaringClass();
    if (declaringClass != null) {
      myProperties.add(new PropertyBean(prefix + "declaringClass", declaringClass.getName()));
    }

    if (component instanceof Tree) {
      TreeModel model = ((Tree)component).getModel();
      if (model != null) {
        myProperties.add(new PropertyBean(prefix + "treeModelClass", model.getClass().getName(), true));
      }
    }

    addActionInfo(component);
    addToolbarInfo(component);
    addToolWindowInfo(component);
    addGutterInfo(component);

    UiInspectorContextProvider contextProvider = UiInspectorUtil.getProvider(component);
    if (contextProvider != null) {
      try {
        myProperties.addAll(contextProvider.getUiInspectorContext());
      }
      catch (Throwable e) {
        LOG.error(e);
      }
    }

    StringBuilder classHierarchy = new StringBuilder();
    for (Class<?> cl = clazz.getSuperclass(); cl != null; cl = cl.getSuperclass()) {
      if (!classHierarchy.isEmpty()) classHierarchy.append(" ").append(UIUtil.rightArrow()).append(" ");
      classHierarchy.append(cl.getName());
      if (JComponent.class.getName().equals(cl.getName())) break;
    }
    myProperties.add(new PropertyBean(prefix + "hierarchy", classHierarchy.toString()));

    if (component instanceof Component) {
      DialogWrapper dialog = DialogWrapper.findInstance((Component)component);
      if (dialog != null) {
        myProperties.add(new PropertyBean(prefix + "dialogWrapperClass", dialog.getClass().getName(), true));
      }
    }

    addPropertiesFromMethodNames(prefix, component, methodNames);
  }
private void addProperties(@NotNull String prefix, @NotNull Object component, @NotNull List<String> methodNames)