Buggy code:
public class Minigame { private static HashMap < String , Minigame > registeredInstances = new HashMap < String , Minigame > ( ) ; private JavaPlugin plugin ; private HashMap < String , Round > rounds = new HashMap < String , Round > ( ) ; private ConfigManager configManager ; private RollbackManager rbManager ; private LobbyManager lobbyManager ; private Locale locale ; HashMap < String , ArenaFactory > arenaFactories = new HashMap < String , ArenaFactory > ( ) ; private static List < String > versions = Arrays . asList ( "0.1.0" , "0.2.0" , "0.3.0" , "0.3.1" ) ; boolean customRoundClass = false ; boolean customPlayerClass = false ; private Minigame ( final JavaPlugin plugin ) { } public static Minigame registerPlugin ( JavaPlugin plugin ) { } public JavaPlugin getPlugin ( ) { } public static List < Minigame > getMinigameInstances ( ) { } public static Minigame getMinigameInstance ( String plugin ) { } public static Minigame getMinigameInstance ( JavaPlugin plugin ) { } public HashMap < String , Round > getRounds ( ) { } public List < Round > getRoundList ( ) { } public Round createRound ( String arena ) throws NoSuchArenaException { Round r = null ; if ( this . customRoundClass ) { try { <START_BUG> Constructor < ? > con = getConfigManager ( ) . roundClass . getDeclaredConstructor ( String . class , String . class ) ; <END_BUG> r = ( ( Round ) ( con . newInstance ( plugin . getName ( ) , arena . toLowerCase ( ) ) ) ) ; r . setStage ( WAITING ) ; rounds . put ( arena . toLowerCase ( ) , r ) ; } catch ( NoSuchMethodException ex ) { log . severe ( locale . getMessage ( "plugin.alert.bad-constructor" , "Round" , plugin . getName ( ) ) ) ; ex . printStackTrace ( ) ; } catch ( InvocationTargetException ex ) { ex . getTargetException ( ) . printStackTrace ( ) ; } catch ( SecurityException ex ) { ex . printStackTrace ( ) ; } catch ( InstantiationException ex ) { log . severe ( locale . getMessage ( "plugin.alert.bad-constructor" , "Round" , plugin . getName ( ) ) ) ; ex . printStackTrace ( ) ; } catch ( IllegalAccessException ex ) { log . severe ( locale . getMessage ( "plugin.alert.invisible-constructor" , "Round" , plugin . getName ( ) ) ) ; ex . printStackTrace ( ) ; } } else { r = new Round ( plugin . getName ( ) , arena . toLowerCase ( ) ) ; } return r ; } public Round getRound ( String name ) { } public ArenaFactory createArena ( String name , Location spawn , Location corner1 , Location corner2 ) throws ArenaExistsException , InvalidLocationException { } public void createArena ( String name , Location spawn ) throws ArenaExistsException { } public void deleteArena ( String name ) throws NoSuchArenaException { } public MGPlayer getMGPlayer ( String player ) { } public boolean isPlayer ( String p ) { } public ArenaFactory getArenaFactory ( String arena ) throws NoSuchArenaException { } public RollbackManager getRollbackManager ( ) { } public LobbyManager getLobbyManager ( ) { } public ConfigManager getConfigManager ( ) { } public Locale getLocale ( ) { } public void log ( String message , LogLevel level ) { } public void severe ( String message ) { } public void warning ( String message ) { } public void info ( String message ) { } public void debug ( String message ) { } public void verbose ( String message ) { } public static HashMap < String , UUID > getOnlineUUIDs ( ) { } public static void uninitialize ( ) { } public static boolean isMGLibCompatible ( String minReqVersion ) { } }

Fix:
Constructor < ? > con = getConfigManager ( ) . getRoundClass ( ) . getDeclaredConstructor ( String . class , String . class ) ;