docs: private static void toStringObject(Class<?> clazz, Object object) {
  		StringBuffer buffer = (StringBuffer)ThreadUtils.getAttribute(TOSTRING_TCBUFF);
  
  		String hexHash = Integer.toHexString(System.identityHashCode(object));
  		if(0 == buffer.length()) {
  			buffer.append(clazz.getSimpleName()).append('@')
  					.append(hexHash).append(TOSTRING_PREFIX);
  		}
  
  		@SuppressWarnings("unchecked")
  		Set<String> converted = (Set<String>)ThreadUtils.getAttribute(TOSTRING_TCATTR);
  		converted.add(object.getClass().getCanonicalName() + "@" + hexHash);
  
  		// Rekurencyjne przeglądanie wszystkich klas nadrzędnych:
  		Class<?> superClass = clazz.getSuperclass();
  		if(superClass != null) {
  			toStringObject(superClass, object);
  		}
  
  		String hyphen = "";
  		if(TOSTRING_PREFIX.charAt(0) != buffer.charAt(buffer.length() - 1)) {
  			hyphen = TOSTRING_HYPHEN;
  		}
  
  		for(Field field: clazz.getDeclaredFields()) {
  			try {
  				field.setAccessible(true);
  				if(field.isAnnotationPresent(InToString.class)) {
  					InToString inToString = field.getAnnotation(InToString.class);
  					if(!inToString.ignore()) {
  						String name = inToString.name();
  						buffer.append(hyphen)
  								.append((name.length() > 0)? name : field.getName())
  								.append(TOSTRING_COLON);
  						toStringField(field.get(object));
  						hyphen = TOSTRING_HYPHEN;
  					}
  				} else if((field.getModifiers() & (Modifier.STATIC | Modifier.FINAL)) == 0) {
  					buffer.append(hyphen).append(field.getName()).append(TOSTRING_COLON);
  					toStringField(field.get(object));
  					hyphen = TOSTRING_HYPHEN;
  				}
  			} catch(Exception e) {
  				// TODO: Zaimplementować logowanie wyjątku
  				e.printStackTrace();
  			}
  		}
  	}