String print(Object o) {
        if (!this.enabled) {
            return null;
        }
        final StringBuilder builder = new StringBuilder();
        builder.append(this.clazz.getSimpleName()).append('{');
        for (final Map.Entry<String, Field> entry : (this.full ? this.internalMap : this.mappings).entrySet()) {
            String name;
            if (this.full && this.mappingsReversed.containsKey(entry.getKey())) {
                name = this.mappingsReversed.get(entry.getKey());
            } else {
                name = entry.getKey();
            }

            builder.append('\"').append(name).append("\":\"");
            try {
                builder.append(entry.getValue().get(o).toString());
            } catch (IllegalArgumentException | IllegalAccessException e) {
                builder.append(e.getMessage());
            }
            builder.append("\", ");
        }
        if (!this.mappings.isEmpty()) {
            builder.setLength(builder.length() - 2);
        }
        builder.append('}');
        return builder.toString();
    }