Program: 89024
Project: 89024
Buggy source:
/** 
 * Initialize configuration from a configuration section.
 * @param config - configuration section to load from.
 */
public void loadFromConfig(ConfigurationSection config){
  if (config.isDouble(MULTIPLIER_SETTING))   multiplier=config.getDouble(MULTIPLIER_SETTING,1);
 else   multiplier=config.getInt(MULTIPLIER_SETTING,1);
  StringListParser listParser=new StringListParser();
  MobSectionParser mobsParser=new MobSectionParser(actionParser,mobParser,multiplier);
  PlayerDeathSectionParser playerDeathParser=new PlayerDeathSectionParser(actionParser,playerParser,multiplier);
  ItemsSectionParser itemsParser=new ItemsSectionParser(itemParser,actionParser,actionTypes,multiplier);
  PlayerSectionParser playerParser=new PlayerSectionParser(actionParser,multiplier);
  LevelsSectionParser levelsParser=new LevelsSectionParser();
  mobsParser.setDebugger(logger);
  itemsParser.setDebugger(logger);
  playerParser.setDebugger(logger);
  levelsParser.setDebugger(logger);
  maximumEnchantLevel=config.getInt(MAXIMUM_ENCHANT_LEVEL_SETTING,DEFAULT_MAXIMUM_ENCHANT_LEVEL);
  maximumBookcaseCount=config.getInt(MAXIMUM_BOOKCASE_COUNT_SETTING,DEFAULT_MAXIMUM_BOOKCASE_COUNT);
  if (maximumBookcaseCount > MAXIMUM_BOOKCASE_COUNT) {
    maximumBookcaseCount=MAXIMUM_BOOKCASE_COUNT;
    logger.printWarning(this,"String_Node_Str");
  }
  defaultRewardsDisabled=config.getBoolean(DEFAULT_REWARDS_SETTING,true);
  scanRadiusSetting=readDouble(config,VIRTUAL_SCAN_RADIUS_SETTING,DEFAULT_SCAN_RADIUS);
  economyItemWorth=config.getInt(ECONOMY_WORTH_SETTING,1);
  economyDropItem=null;
  try {
    String text=config.getString(ECONOMY_DROPS_SETTING,null);
    Query drop=text != null ? itemParser.parse(text) : null;
    if (drop != null && drop instanceof ItemQuery) {
      economyDropItem=((ItemQuery)drop).toItemStack(1);
    }
  }
 catch (  ParsingException e) {
    logger.printWarning(this,"String_Node_Str",e.getMessage());
  }
  channelProvider.setDefaultChannels(listParser.parseSafe(config,DEFAULT_CHANNELS_SETTING));
  String defaultReward=loadReward(config.getString(REWARD_TYPE_SETTING,null));
  if (defaultReward != null)   setDefaultRewardName(defaultReward);
  loadRate(config);
  try {
    experienceDrop=mobsParser.parse(config,"String_Node_Str");
    playerDeathDrop=playerDeathParser.parse(config,"String_Node_Str");
    ItemsSectionResult result=itemsParser.parse(config,"String_Node_Str");
    actionRewards=result.getActionRewards();
    complexRewards=result.getComplexRewards();
    playerRewards=playerParser.parse(config,"String_Node_Str");
    levelingRate=levelsParser.parse(config,"String_Node_Str");
  }
 catch (  ParsingException e) {
    ErrorReporting.DEFAULT.reportError(logger,this,e);
  }
  initializeReferences();
  checkRewards();
}

Fixed version (ground truth):
/** 
 * Initialize configuration from a configuration section.
 * @param config - configuration section to load from.
 */
public void loadFromConfig(ConfigurationSection config){
  if (config.isDouble(MULTIPLIER_SETTING))   multiplier=config.getDouble(MULTIPLIER_SETTING,1);
 else   multiplier=config.getInt(MULTIPLIER_SETTING,1);
  MobSectionParser mobsParser=new MobSectionParser(actionParser,mobParser,multiplier);
  PlayerDeathSectionParser playerDeathParser=new PlayerDeathSectionParser(actionParser,playerParser,multiplier);
  ItemsSectionParser itemsParser=new ItemsSectionParser(itemParser,actionParser,actionTypes,multiplier);
  PlayerSectionParser playerParser=new PlayerSectionParser(actionParser,multiplier);
  LevelsSectionParser levelsParser=new LevelsSectionParser();
  mobsParser.setDebugger(logger);
  itemsParser.setDebugger(logger);
  playerParser.setDebugger(logger);
  levelsParser.setDebugger(logger);
  playerDeathParser.setDebugger(logger);
  maximumEnchantLevel=config.getInt(MAXIMUM_ENCHANT_LEVEL_SETTING,DEFAULT_MAXIMUM_ENCHANT_LEVEL);
  maximumBookcaseCount=config.getInt(MAXIMUM_BOOKCASE_COUNT_SETTING,DEFAULT_MAXIMUM_BOOKCASE_COUNT);
  if (maximumBookcaseCount > MAXIMUM_BOOKCASE_COUNT) {
    maximumBookcaseCount=MAXIMUM_BOOKCASE_COUNT;
    logger.printWarning(this,"String_Node_Str");
  }
  defaultRewardsDisabled=config.getBoolean(DEFAULT_REWARDS_SETTING,true);
  scanRadiusSetting=readDouble(config,VIRTUAL_SCAN_RADIUS_SETTING,DEFAULT_SCAN_RADIUS);
  economyItemWorth=config.getInt(ECONOMY_WORTH_SETTING,1);
  economyDropItem=null;
  try {
    String text=config.getString(ECONOMY_DROPS_SETTING,null);
    Query drop=text != null ? itemParser.parse(text) : null;
    if (drop != null && drop instanceof ItemQuery) {
      economyDropItem=((ItemQuery)drop).toItemStack(1);
    }
  }
 catch (  ParsingException e) {
    logger.printWarning(this,"String_Node_Str",e.getMessage());
  }
  StringListParser listParser=new StringListParser();
  channelProvider.setDefaultChannels(listParser.parseSafe(config,DEFAULT_CHANNELS_SETTING));
  String defaultReward=loadReward(config.getString(REWARD_TYPE_SETTING,null));
  if (defaultReward != null)   setDefaultRewardName(defaultReward);
  loadRate(config);
  try {
    experienceDrop=mobsParser.parse(config,"String_Node_Str");
    playerDeathDrop=playerDeathParser.parse(config,"String_Node_Str");
    ItemsSectionResult result=itemsParser.parse(config,"String_Node_Str");
    actionRewards=result.getActionRewards();
    complexRewards=result.getComplexRewards();
    playerRewards=playerParser.parse(config,"String_Node_Str");
    levelingRate=levelsParser.parse(config,"String_Node_Str");
  }
 catch (  ParsingException e) {
    ErrorReporting.DEFAULT.reportError(logger,this,e);
  }
  initializeReferences();
  checkRewards();
}