Buggy code:
public class RushCore { public static void initialize ( RushClassFinder rushClassFinder , RushStatementRunner statementRunner , RushQueProvider queProvider , RushConfig rushConfig , RushStringSanitizer rushStringSanitizer , Logger logger , List < RushColumn > columns , RushObjectSerializer rushObjectSerializer , RushObjectDeserializer rushObjectDeserializer ) { columns . add ( new RushColumnBoolean ( ) ) ; columns . add ( new RushColumnDate ( ) ) ; columns . add ( new RushColumnDouble ( ) ) ; columns . add ( new RushColumnInt ( ) ) ; columns . add ( new RushColumnLong ( ) ) ; columns . add ( new RushColumnShort ( ) ) ; columns . add ( new RushColumnFloat ( ) ) ; columns . add ( new RushColumnString ( ) ) ; RushColumns rushColumns = new co . uk . rushorm . core . implementation . RushColumnsImplementation ( columns ) ; <START_BUG> RushUpgradeManager rushUpgradeManager = new ReflectionUpgradeManager ( ) ; <END_BUG> Map < Class , AnnotationCache > annotationCache = new HashMap < > ( ) ; RushSaveStatementGenerator saveStatementGenerator = new ReflectionSaveStatementGenerator ( ) ; RushConflictSaveStatementGenerator conflictSaveStatementGenerator = new ConflictSaveStatementGenerator ( ) ; RushDeleteStatementGenerator deleteStatementGenerator = new ReflectionDeleteStatementGenerator ( ) ; RushTableStatementGenerator rushTableStatementGenerator = new ReflectionTableStatementGenerator ( ) ; RushClassLoader rushClassLoader = new ReflectionClassLoader ( ) ; RushCore . initialize ( rushUpgradeManager , saveStatementGenerator , conflictSaveStatementGenerator , deleteStatementGenerator , rushClassFinder , rushTableStatementGenerator , statementRunner , queProvider , rushConfig , rushClassLoader , rushStringSanitizer , logger , rushObjectSerializer , rushObjectDeserializer , rushColumns , annotationCache ) ; } public static void initialize ( RushUpgradeManager rushUpgradeManager , RushSaveStatementGenerator saveStatementGenerator , RushConflictSaveStatementGenerator rushConflictSaveStatementGenerator , RushDeleteStatementGenerator deleteStatementGenerator , RushClassFinder rushClassFinder , RushTableStatementGenerator rushTableStatementGenerator , RushStatementRunner statementRunner , RushQueProvider queProvider , RushConfig rushConfig , RushClassLoader rushClassLoader , RushStringSanitizer rushStringSanitizer , Logger logger , RushObjectSerializer rushObjectSerializer , RushObjectDeserializer rushObjectDeserializer , RushColumns rushColumns , Map < Class , AnnotationCache > annotationCache ) { } public static RushCore getInstance ( ) { } public RushMetaData getMetaData ( Rush rush ) { } public String getId ( Rush rush ) { } public void save ( Rush rush ) { } public void save ( List < ? extends Rush > objects ) { } public void save ( final Rush rush , final RushCallback callback ) { } public void save ( final List < ? extends Rush > objects , final RushCallback callback ) { } public < T extends Rush > List < T > load ( Class < T > clazz , String sql ) { } public < T extends Rush > void load ( final Class < T > clazz , final String sql , final RushSearchCallback < T > callback ) { } public void delete ( Rush rush ) { } public void delete ( List < ? extends Rush > objects ) { } public void delete ( final Rush rush , final RushCallback callback ) { } public void delete ( final List < ? extends Rush > objects , final RushCallback callback ) { } public List < RushConflict > saveOnlyWithoutConflict ( Rush rush ) { } public List < RushConflict > saveOnlyWithoutConflict ( List < ? extends Rush > objects ) { } public void saveOnlyWithoutConflict ( final Rush rush , final RushConflictCallback callback ) { } public void saveOnlyWithoutConflict ( final List < ? extends Rush > objects , final RushConflictCallback callback ) { } public String serialize ( List < ? extends Rush > rush ) { } public String serialize ( List < ? extends Rush > rush , String idName ) { } public String serialize ( List < ? extends Rush > rush , String idName , String versionName ) { } public List < Rush > deserialize ( String string ) { } public List < Rush > deserialize ( String string , String idName ) { } public List < Rush > deserialize ( String string , String idName , String versionName ) { } protected String sanitize ( String string ) { } private static RushCore rushCore ; private final Map < Rush , RushMetaData > idTable = new WeakHashMap < > ( ) ; private final RushSaveStatementGenerator saveStatementGenerator ; private final RushConflictSaveStatementGenerator rushConflictSaveStatementGenerator ; private final RushDeleteStatementGenerator deleteStatementGenerator ; private final RushStatementRunner statementRunner ; private final RushQueProvider queProvider ; private final RushConfig rushConfig ; private final RushTableStatementGenerator rushTableStatementGenerator ; private final RushClassLoader rushClassLoader ; private final Logger logger ; private final RushStringSanitizer rushStringSanitizer ; private final RushObjectSerializer rushObjectSerializer ; private final RushObjectDeserializer rushObjectDeserializer ; private final RushColumns rushColumns ; private final Map < Class , AnnotationCache > annotationCache ; private RushCore ( RushSaveStatementGenerator saveStatementGenerator , RushConflictSaveStatementGenerator rushConflictSaveStatementGenerator , RushDeleteStatementGenerator deleteStatementGenerator , RushStatementRunner statementRunner , RushQueProvider queProvider , RushConfig rushConfig , RushTableStatementGenerator rushTableStatementGenerator , RushClassLoader rushClassLoader , RushStringSanitizer rushStringSanitizer , Logger logger , RushObjectSerializer rushObjectSerializer , RushObjectDeserializer rushObjectDeserializer , RushColumns rushColumns , Map < Class , AnnotationCache > annotationCache ) { } private void loadAnnotationCache ( RushClassFinder rushClassFinder ) { } private void createTables ( List < Class > classes , final RushQue que ) { } private void upgrade ( List < Class > classes , RushUpgradeManager rushUpgradeManager , final RushQue que ) { } private void save ( List < ? extends Rush > objects , final RushQue que ) { } private List < RushConflict > saveOnlyWithoutConflict ( List < ? extends Rush > objects , final RushQue que ) { } private void delete ( List < ? extends Rush > objects , final RushQue que ) { } private < T extends Rush > List < T > load ( Class < T > clazz , String sql , final RushQue que ) { } private void addRush ( Rush rush , RushMetaData rushMetaData ) { } private void removeRush ( Rush rush ) { } }

Fix:
RushUpgradeManager rushUpgradeManager = new co . uk . rushorm . core . implementation . ReflectionUpgradeManager ( logger ) ;