@SuppressWarnings( "unchecked" )
    private List<String> formatRow( Object object, List<Field> fields, Map<String, ObjectFormatter<?>> formattersByFieldNames,
            boolean[] nonNullColumns ) {
        List<Object> allFieldValues = ReflectionUtil.getAllFieldValues( object, fields, "" );

        List<String> res = Lists.newArrayList();

        for( int i = 0; i < allFieldValues.size(); i++ ) {
            Object v = allFieldValues.get( i );
            Field field = fields.get( i );

            if( v != null ) {
                nonNullColumns[i] = true;

                @SuppressWarnings( "rawtypes" )
                ObjectFormatter formatter = formattersByFieldNames.get( field.getName() );
                if( formatter != null ) {
                    res.add( formatter.format( v ) );
                } else {
                    formatter = DefaultFormatter.INSTANCE;
                    res.add( formatter.format( v ) );
                }
            } else {
                nonNullColumns[i] = false;

                res.add( null );
            }
        }

        return res;
    }
{@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