Buggy code:
public abstract class AbstractWriter < T > implements CsvWriter < T > { private String sQuote ; private boolean addQuote ; private int delimiterLength = 0 ; protected final CsvFilePool filePool ; protected final CsvBangConfiguration conf ; protected int defaultLineSize = 100 ; protected volatile boolean isClose = false ; public AbstractWriter ( final CsvFilePool pool , final CsvBangConfiguration conf ) throws CsvBangException { } public void open ( ) throws CsvBangCloseException , CsvBangException { } public boolean isOpen ( ) { } @ Override public void setHeader ( Object header ) throws CsvBangException { } @ Override public void setFooter ( Object footer ) throws CsvBangException { } public void write ( final T line ) throws CsvBangCloseException , CsvBangException { } public void write ( final T [ ] lines ) throws CsvBangCloseException , CsvBangException { } @ Override public void write ( final Collection < T > lines ) throws CsvBangCloseException , CsvBangException { } @ Override public void comment ( final Comment comment ) throws CsvBangCloseException , CsvBangException { } @ Override public void comment ( final T line ) throws CsvBangCloseException , CsvBangException { } @ Override public void comment ( final T [ ] lines ) throws CsvBangCloseException , CsvBangException { } @ Override public void comment ( final Collection < T > lines ) throws CsvBangCloseException , CsvBangException { } @ Override public void close ( ) throws IOException { } @ Override public boolean isClose ( ) { } protected abstract void internalWrite ( final Collection < ? > lines , final boolean isComment ) throws CsvBangCloseException , CsvBangException { } protected StringBuilder generateLine ( final Object line , final boolean isComment ) throws CsvBangException { } private StringBuilder writeComment ( final Object line ) throws CsvBangException { } private StringBuilder writeLine ( final Object line ) throws CsvBangException { if ( line == null ) { return null ; } final StringBuilder sLine = new StringBuilder ( defaultLineSize ) ; boolean isNullLine = true ; for ( final CsvFieldConfiguration f : conf . fields ) { <START_BUG> final Object v = ReflectionUti . getValue ( f . memberBean , line ) ; <END_BUG> if ( v != null ) { isNullLine = false ; if ( v instanceof Object [ ] ) { saveCollection ( f , sLine , Arrays . asList ( v ) ) ; } else if ( v instanceof Collection < ? > ) { saveCollection ( f , sLine , ( ( Collection < ? > ) ( v ) ) ) ; } else { addField ( f , sLine , v ) ; } } else { addField ( f , sLine , v ) ; } } if ( isNullLine || ( ( sLine . length ( ) ) == 0 ) ) { return null ; } sLine . delete ( 0 , delimiterLength ) ; sLine . insert ( 0 , conf . startRecord ) . append ( conf . endRecord ) ; if ( ( conf . commentsBefore ) != null ) { for ( final AnnotatedElement member : conf . commentsBefore ) { sLine . insert ( 0 , generateComment ( new Comment ( ReflectionUti . getValue ( member , line ) ) ) ) ; } } if ( ( conf . commentsAfter ) != null ) { for ( final AnnotatedElement member : conf . commentsAfter ) { sLine . append ( generateComment ( new Comment ( ReflectionUti . getValue ( member , line ) ) ) ) ; } } return sLine ; } private void quote ( final StringBuilder s ) { } private void addField ( final CsvFieldConfiguration f , final StringBuilder s , final Object v ) { } private void saveCollection ( final CsvFieldConfiguration f , final StringBuilder s , final Collection < ? > c ) { } private StringBuilder generateComment ( final Comment comment ) { } private StringBuilder generateComment ( final CharSequence comment ) { } }

Fix:
final Object v = ReflectionUti . getValue ( f . getter , line ) ;