docs: public static String toStringBuilder(Object object) {
  		if(ThreadUtils.hasAttribute(TOSTRING_TCBUFF)) {
  			// Nastąpiło rekurencyjne wywołanie metody toStringBuidler(Object).
  			// Pobieramy z wątku bufor zawierający generowany łańcuch i zachowujemy
  			// go w zmiennej pomocniczej na czas tworzenia reprezentacji podobiektu:
  			StringBuffer resultBuffer = (StringBuffer)ThreadUtils.getAttribute(TOSTRING_TCBUFF);
  
  			StringBuffer localBuffer = new StringBuffer();
  			ThreadUtils.putAttribute(TOSTRING_TCBUFF, localBuffer);
  
  			toStringObject(object.getClass(), object);
  
  			ThreadUtils.putAttribute(TOSTRING_TCBUFF, resultBuffer);
  
  			localBuffer.append(TOSTRING_SUFFIX);
  			return localBuffer.toString();
  		} else try {
  			// Generujemy reprezentację tekstową obiektu. Tworzymy bufor na tą
  			// reprezentację i zbiór gromadzący informacje o obiektach już
  			// przetworzonych (w celu uniknięcia cyklicznych wywołań):
  			StringBuffer resultBuffer = new StringBuffer();
  			ThreadUtils.putAttribute(TOSTRING_TCBUFF, resultBuffer);
  			ThreadUtils.putAttribute(TOSTRING_TCATTR, new HashSet<String>());
  
  			toStringObject(object.getClass(), object);
  
  			resultBuffer.append(TOSTRING_SUFFIX);
  			return resultBuffer.toString();
  		} finally {
  			ThreadUtils.removeAttribute(TOSTRING_TCBUFF);
  			ThreadUtils.removeAttribute(TOSTRING_TCATTR);
  		}
  	}