/**
   * @param field
   * @param object
   */
  private void dumpField(Field field, Object object) {
    try {
      buffer.append(field.getName()).append('=');
      field.setAccessible(true);

      Object fieldValue = field.get(object);
      dumpObject(fieldValue);
    } catch (IllegalAccessException exc) {
      throw new TechnicalException(
          "Failed to dump field " + FieldHelper.getClassAndFieldName(field, true), exc);
    }
  }
  /**
   * Method dumpDumpable
   *
   * @param dumpable object to dump
   */
  private void dumpDumpable(Dumpable dumpable) {
    buffer.append('[');

    Iterator fields = FieldHelper.getNonStaticFields(dumpable.getClass(), Object.class).iterator();

    while (fields.hasNext()) {
      Field field = (Field) fields.next();

      if (!Modifier.isTransient(field.getModifiers())) {
        dumpField(field, dumpable);

        if (fields.hasNext()) {
          buffer.append(", ");
        }
      }
    }

    buffer.append(']');
  }