docs: public void serializeBean(Object obj, Set<String> attributesToIgnore) {
          builder.newIndentedline();
          try {
              BeanInfo info = Introspector.getBeanInfo(obj.getClass());
              List<NameValue> values = new ArrayList<>();
  
              for (PropertyDescriptor pd : info.getPropertyDescriptors()) {
                  if (pd.getName().equals("class")) continue;
                  Object value = pd.getReadMethod().invoke(obj);
                  if (value == null) continue;
                  if (value instanceof List && ((List) value).isEmpty()) continue;
                  String attribute = getAttributeForField(pd.getName());
                  if (!attributesToIgnore.contains(attribute)) {
                      values.add(new NameValue(attribute, value, value instanceof List && isPlainType(((List) value).get(0))));
                  }
              }
  
              for (int i = 0; i < values.size(); i++) {
                  NameValue value = values.get(i);
                  builder.append(value.name).append(" = ");
                  if (value.plain) {
                      serializePlain(value.value);
                  } else {
                      serialize(value.value);
                  }
                  if (i < values.size() - 1) {
                      builder.newline();
                  }
  
              }
          } catch (Exception e) {
              throw new RuntimeException(e);
          }
          builder.unindent().newline();
      }