@Override
    public String format( Object obj, POJOFormat annotation ) {
        if( obj == null ) {
            return "null";
        }

        List<Field> fields = getFields( obj.getClass(), annotation );
        boolean[] nonNullColumns = new boolean[fields.size()];

        Map<String, ObjectFormatter<?>> formattersByFieldName = retrieveFieldsFormatters( annotation, fields );

        StringBuffer sb = new StringBuffer();
        BracketsEnum brackets = annotation.brackets();
        sb.append( brackets.getOpening() );
        String sep = "";
        List<String> values = formatRow( obj, fields, formattersByFieldName, nonNullColumns );
        List<String> headers = getFieldNames( fields );
        for( int i = 0; i < values.size(); i++ ) {
            if( ( nonNullColumns[i] ) || ( ( !nonNullColumns[i] ) && annotation.includeNullColumns() ) ) {
                sb.append( sep );
                if( annotation.prefixWithFieldName() ) {
                    sb.append( headers.get( i ) );
                    sb.append( "=" );
                }
                sb.append( values.get( i ) );
                sep = annotation.fieldSeparator();
            }
        }
        sb.append( brackets.getClosing() );
        return sb.toString();
    }
{@link com.tngtech.jgiven.format.AnnotationArgumentFormatter} that is used by the {@link POJOFormat}
annotation
jgiven-core/src/main/java/com/tngtech/jgiven/format/POJOAnnotationFormatter.java