Program: 93750
Project: 93750
Buggy source:
private void convertFactory(){
  final String currentWrapper=ConfigEnum.DATA_WRAPPER.getString();
  final String convertTo=ConfigEnum.CONVERT_INTO.getString();
  if (convertTo.equalsIgnoreCase(currentWrapper)) {
    return;
  }
  if (currentWrapper.equalsIgnoreCase("String_Node_Str") && (convertTo.equalsIgnoreCase("String_Node_Str") || convertTo.equalsIgnoreCase("String_Node_Str"))) {
    ConfigEnum.DATA_WRAPPER.setValue(convertTo);
    try {
      ConfigEnum.save();
    }
 catch (    final IOException e) {
    }
    try {
      createTable();
    }
 catch (    final SQLException e) {
      ACLogger.severe("String_Node_Str",e);
      return;
    }
    WorldManager.getInstance().convertFactory(new SQLWorldFactory());
    PlayerManager.getInstance().convertFactory(new SQLPlayerFactory());
    FilePlayer.stopSavingTask();
  }
 else   if (isSqlWrapper() && (convertTo.equalsIgnoreCase("String_Node_Str"))) {
    ConfigEnum.DATA_WRAPPER.setValue(convertTo);
    try {
      ConfigEnum.save();
    }
 catch (    final IOException e) {
    }
    WorldManager.getInstance().convertFactory(new FileWorldFactory(coreInstance.getDataFolder().getPath() + File.separator + "String_Node_Str"));
    PlayerManager.getInstance().convertFactory(new FilePlayerFactory(coreInstance.getDataFolder().getPath() + File.separator + "String_Node_Str"));
    FilePlayer.scheduleAsyncSave();
    SQLPlayer.stopSavingTask();
  }
 else   if (isSqlWrapper() && (convertTo.equalsIgnoreCase("String_Node_Str") || convertTo.equalsIgnoreCase("String_Node_Str"))) {
    final WorldConverter wConverter=WorldManager.getInstance().buildConverter(new FileWorldFactory(coreInstance.getDataFolder().getPath() + File.separator + "String_Node_Str"));
    final PlayerConverter pConverter=PlayerManager.getInstance().buildConverter(new FilePlayerFactory(coreInstance.getDataFolder().getPath() + File.separator + "String_Node_Str"));
    final String oldValue=ConfigEnum.DATA_WRAPPER.getString();
    wConverter.setAfterConverTask(new Runnable(){
      @Override public void run(){
        ConfigEnum.DATA_WRAPPER.setValue(convertTo);
        Database.initDb();
        try {
          createTable();
        }
 catch (        final SQLException e) {
          ACLogger.severe("String_Node_Str",e);
          return;
        }
        SQLWorld.initPrepStmt();
        WorldManager.getInstance().convertFactory(new SQLWorldFactory());
      }
    }
);
    pConverter.setAfterConvertTask(new Runnable(){
      @Override public void run(){
        ConfigEnum.DATA_WRAPPER.setValue(convertTo);
        Database.initDb();
        try {
          Database.DATABASE.open();
        }
 catch (        final SQLException e) {
          ACLogger.severe("String_Node_Str",e);
        }
        SQLPlayer.initPrepStmt();
        FilePlayer.forceSaveList();
        FilePlayer.stopSavingTask();
        final PlayerConverter converter=PlayerManager.getInstance().buildConverter(new SQLPlayerFactory());
        converter.setAfterConvertTask(new Runnable(){
          @Override public void run(){
            try {
              ConfigEnum.save();
            }
 catch (            final IOException e) {
            }
          }
        }
);
        converter.convert();
      }
    }
);
    wConverter.convert();
    ConfigEnum.DATA_WRAPPER.setValue(oldValue);
    Database.initDb();
    try {
      Database.DATABASE.open();
    }
 catch (    final SQLException e) {
      ACLogger.severe("String_Node_Str",e);
    }
    pConverter.convert();
  }
}

Fixed version (ground truth):
private void convertFactory(){
  final String currentWrapper=ConfigEnum.DATA_WRAPPER.getString();
  final String convertTo=ConfigEnum.CONVERT_INTO.getString();
  if (convertTo.equalsIgnoreCase(currentWrapper)) {
    return;
  }
  if (currentWrapper.equalsIgnoreCase("String_Node_Str") && (convertTo.equalsIgnoreCase("String_Node_Str") || convertTo.equalsIgnoreCase("String_Node_Str"))) {
    ConfigEnum.DATA_WRAPPER.setValue(convertTo);
    try {
      ConfigEnum.save();
    }
 catch (    final IOException e) {
    }
    try {
      createTable();
    }
 catch (    final SQLException e) {
      ACLogger.severe("String_Node_Str",e);
      return;
    }
    WorldManager.getInstance().convertFactory(new SQLWorldFactory());
    PlayerManager.getInstance().convertFactory(new SQLPlayerFactory());
    FilePlayer.stopSavingTask();
  }
 else   if (isSqlWrapper() && (convertTo.equalsIgnoreCase("String_Node_Str"))) {
    ConfigEnum.DATA_WRAPPER.setValue(convertTo);
    try {
      ConfigEnum.save();
    }
 catch (    final IOException e) {
    }
    WorldManager.getInstance().convertFactory(new FileWorldFactory(coreInstance.getDataFolder().getPath() + File.separator + "String_Node_Str"));
    PlayerManager.getInstance().convertFactory(new FilePlayerFactory(coreInstance.getDataFolder().getPath() + File.separator + "String_Node_Str"));
    FilePlayer.scheduleAsyncSave();
    SQLPlayer.stopSavingTask();
  }
 else   if (isSqlWrapper() && (convertTo.equalsIgnoreCase("String_Node_Str") || convertTo.equalsIgnoreCase("String_Node_Str"))) {
    final WorldConverter wConverter=WorldManager.getInstance().buildConverter(new FileWorldFactory(coreInstance.getDataFolder().getPath() + File.separator + "String_Node_Str"));
    final PlayerConverter pConverter=PlayerManager.getInstance().buildConverter(new FilePlayerFactory(coreInstance.getDataFolder().getPath() + File.separator + "String_Node_Str"));
    final String oldValue=ConfigEnum.DATA_WRAPPER.getString();
    wConverter.setAfterConverTask(new Runnable(){
      @Override public void run(){
        ConfigEnum.DATA_WRAPPER.setValue(convertTo);
        Database.initDb();
        try {
          createTable();
        }
 catch (        final SQLException e) {
          ACLogger.severe("String_Node_Str",e);
          return;
        }
        SQLWorld.initPrepStmt();
        WorldManager.getInstance().convertFactory(new SQLWorldFactory());
      }
    }
);
    pConverter.setAfterConvertTask(new Runnable(){
      @Override public void run(){
        ConfigEnum.DATA_WRAPPER.setValue(convertTo);
        Database.initDb();
        try {
          Database.DATABASE.open();
        }
 catch (        final SQLException e) {
          ACLogger.severe("String_Node_Str",e);
        }
        SQLPlayer.initPrepStmt();
        FilePlayer.forceSaveList();
        FilePlayer.stopSavingTask();
        final PlayerConverter converter=PlayerManager.getInstance().buildConverter(new SQLPlayerFactory());
        converter.setAfterConvertTask(new Runnable(){
          @Override public void run(){
            SQLPlayer.initPrepStmt();
            try {
              ConfigEnum.save();
            }
 catch (            final IOException e) {
            }
          }
        }
);
        converter.convert();
      }
    }
);
    wConverter.convert();
    ConfigEnum.DATA_WRAPPER.setValue(oldValue);
    Database.initDb();
    try {
      Database.DATABASE.open();
    }
 catch (    final SQLException e) {
      ACLogger.severe("String_Node_Str",e);
    }
    pConverter.convert();
  }
}