private void addPropertiesFromMethodNames(@NotNull String prefix,
                                            @NotNull Object component,
                                            @NotNull List<String> methodNames) {
    Class<?> clazz0 = component.getClass();
    Class<?> clazz = clazz0.isAnonymousClass() ? clazz0.getSuperclass() : clazz0;
    for (String name : methodNames) {
      String propertyName = ObjectUtils.notNull(StringUtil.getPropertyName(name), name);
      Object propertyValue;
      try {
        try {
          //noinspection ConstantConditions
          propertyValue = ReflectionUtil.findMethod(collectAllMethodsRecursively(clazz), name).invoke(component);
        }
        catch (Exception e) {
          propertyValue = ReflectionUtil.findField(clazz, null, name).get(component);
        }
        boolean changed = false;
        try {
          final String checkerMethodName = "is" + StringUtil.capitalize(propertyName) + "Set";
          if (CHECKERS.contains(checkerMethodName)) {
            //noinspection ConstantConditions
            final Object value = ReflectionUtil.findMethod(Arrays.asList(clazz.getMethods()), checkerMethodName).invoke(component);
            if (value instanceof Boolean) {
              changed = ((Boolean)value).booleanValue();
            }
          }
        }
        catch (Exception ignored) {
        }
        myProperties.add(new PropertyBean(prefix + propertyName, propertyValue, changed));
      }
      catch (Exception ignored) {
      }
    }
  }
private void addPropertiesFromMethodNames(@NotNull String prefix,
                                            @NotNull Object component,
                                            @NotNull List<String> methodNames)