Program: 16964
Project: 16964
Buggy source:
/** 
 * Primary constructor. Requires a name and a world.
 */
public ArenaImpl(MobArena plugin,Config config,String name,World world){
  if (world == null)   throw new NullPointerException("String_Node_Str" + name + "String_Node_Str");
  this.name=name;
  this.world=world;
  this.plugin=plugin;
  this.settings=new ConfigSection(config,"String_Node_Str" + name + "String_Node_Str");
  this.region=new ArenaRegion(new ConfigSection(config,"String_Node_Str" + name + "String_Node_Str"),this);
  this.enabled=settings.getBoolean("String_Node_Str",false);
  this.protect=settings.getBoolean("String_Node_Str",true);
  this.running=false;
  this.edit=false;
  this.inventoryManager=new InventoryManager(this);
  this.rewardManager=new RewardManager(this);
  this.leaderboard=new Leaderboard(plugin,this,region.getLeaderboard());
  this.arenaPlayerMap=new HashMap<Player,ArenaPlayer>();
  this.arenaPlayers=new HashSet<Player>();
  this.lobbyPlayers=new HashSet<Player>();
  this.readyPlayers=new HashSet<Player>();
  this.specPlayers=new HashSet<Player>();
  this.deadPlayers=new HashSet<Player>();
  this.randoms=new HashSet<Player>();
  this.classes=plugin.getArenaMaster().getClasses();
  this.attachments=new HashMap<Player,PermissionAttachment>();
  this.repairQueue=new PriorityBlockingQueue<Repairable>(100,new RepairableComparator());
  this.blocks=new HashSet<Block>();
  this.repairables=new LinkedList<Repairable>();
  this.containables=new LinkedList<Repairable>();
  this.monsterManager=new MonsterManager();
  this.waveManager=new WaveManager(this,config);
  this.everyWaveMap=MAUtils.getArenaRewardMap(plugin,config,name,"String_Node_Str");
  this.afterWaveMap=MAUtils.getArenaRewardMap(plugin,config,name,"String_Node_Str");
  this.eventListener=new ArenaListener(this,plugin);
  this.entryFee=ItemParser.parseItems(settings.getString("String_Node_Str","String_Node_Str"));
  this.allowMonsters=world.getAllowMonsters();
  this.allowAnimals=world.getAllowAnimals();
  String timeString=settings.getString("String_Node_Str","String_Node_Str");
  Time time=Enums.getEnumFromString(Time.class,timeString);
  this.timeStrategy=(time != null ? new TimeStrategyLocked(time) : new TimeStrategyNull());
  this.dir=new File(plugin.getDataFolder() + File.separator + "String_Node_Str"+ File.separator+ name);
  this.sessionBuilder=new YMLSessionBuilder(new File(dir,"String_Node_Str"));
  this.totalsBuilder=new YMLTotalsBuilder(new File(dir,"String_Node_Str"));
  this.log=new ArenaLog(this,sessionBuilder,totalsBuilder);
}

Fixed version (ground truth):
/** 
 * Primary constructor. Requires a name and a world.
 */
public ArenaImpl(MobArena plugin,Config config,String name,World world){
  if (world == null)   throw new NullPointerException("String_Node_Str" + name + "String_Node_Str");
  this.name=name;
  this.world=world;
  this.plugin=plugin;
  this.settings=new ConfigSection(config,"String_Node_Str" + name + "String_Node_Str");
  this.region=new ArenaRegion(new ConfigSection(config,"String_Node_Str" + name + "String_Node_Str"),this);
  this.enabled=settings.getBoolean("String_Node_Str",false);
  this.protect=settings.getBoolean("String_Node_Str",true);
  this.logging=settings.getBoolean("String_Node_Str",true);
  this.running=false;
  this.edit=false;
  this.inventoryManager=new InventoryManager(this);
  this.rewardManager=new RewardManager(this);
  this.leaderboard=new Leaderboard(plugin,this,region.getLeaderboard());
  this.arenaPlayerMap=new HashMap<Player,ArenaPlayer>();
  this.arenaPlayers=new HashSet<Player>();
  this.lobbyPlayers=new HashSet<Player>();
  this.readyPlayers=new HashSet<Player>();
  this.specPlayers=new HashSet<Player>();
  this.deadPlayers=new HashSet<Player>();
  this.randoms=new HashSet<Player>();
  this.classes=plugin.getArenaMaster().getClasses();
  this.attachments=new HashMap<Player,PermissionAttachment>();
  this.repairQueue=new PriorityBlockingQueue<Repairable>(100,new RepairableComparator());
  this.blocks=new HashSet<Block>();
  this.repairables=new LinkedList<Repairable>();
  this.containables=new LinkedList<Repairable>();
  this.monsterManager=new MonsterManager();
  this.waveManager=new WaveManager(this,config);
  this.everyWaveMap=MAUtils.getArenaRewardMap(plugin,config,name,"String_Node_Str");
  this.afterWaveMap=MAUtils.getArenaRewardMap(plugin,config,name,"String_Node_Str");
  this.eventListener=new ArenaListener(this,plugin);
  this.entryFee=ItemParser.parseItems(settings.getString("String_Node_Str","String_Node_Str"));
  this.allowMonsters=world.getAllowMonsters();
  this.allowAnimals=world.getAllowAnimals();
  String timeString=settings.getString("String_Node_Str","String_Node_Str");
  Time time=Enums.getEnumFromString(Time.class,timeString);
  this.timeStrategy=(time != null ? new TimeStrategyLocked(time) : new TimeStrategyNull());
  if (isLogging()) {
    this.dir=new File(plugin.getDataFolder() + File.separator + "String_Node_Str"+ File.separator+ name);
    this.sessionBuilder=new YMLSessionBuilder(new File(dir,"String_Node_Str"));
    this.totalsBuilder=new YMLTotalsBuilder(new File(dir,"String_Node_Str"));
    this.log=new ArenaLog(this,sessionBuilder,totalsBuilder);
  }
}