Program: 80892
Project: 80892
Buggy source:
public AutoFillPlayers parseServerSections(TabListConfig config,SlotTemplate g_prefix,SlotTemplate g_suffix,List<String> g_filter,List<String> g_sort,int g_maxPlayers,List<SlotTemplate> playerLines,List<SlotTemplate> morePlayerLines){
  Map<String,ServerInfo> servers=ProxyServer.getInstance().getServers();
  Set<String> serverSet=new HashSet<>(servers.keySet());
  HashMultimap<String,String> aliasToServerMap=HashMultimap.create();
  for (  Map.Entry<String,String> entry : BungeeTabListPlus.getInstance().getConfigManager().getMainConfig().serverAlias.entrySet()) {
    if (ProxyServer.getInstance().getServerInfo(entry.getKey()) == null) {
      BungeeTabListPlus.getInstance().getLogger().warning("String_Node_Str" + entry.getKey() + "String_Node_Str");
      continue;
    }
    aliasToServerMap.put(entry.getValue(),entry.getKey());
  }
  List<ServerGroup> list=new ArrayList<>();
  while (!serverSet.isEmpty()) {
    String server=serverSet.iterator().next();
    String alias=BungeeTabListPlus.getInstance().getConfigManager().getMainConfig().serverAlias.get(server);
    if (alias != null) {
      Set<String> strings=aliasToServerMap.get(alias);
      serverSet.removeAll(strings);
      list.add(GenericServerGroup.of(serverSet,alias));
    }
 else {
      serverSet.remove(server);
      list.add(GenericServerGroup.of(server));
    }
  }
  List<Function<ServerGroup,Section>> sections=new ArrayList<>();
  for (  String line : config.groupLines) {
    final int[] startColumn={-1};
    final List<String> sortrules=new ArrayList<>();
    final int[] maxplayers={g_maxPlayers};
    line=findTag(line,PATTERN_ALIGN_LEFT,matcher -> {
      if (config.verticalMode) {
        plugin.getLogger().warning("String_Node_Str");
      }
 else {
        startColumn[0]=0;
      }
    }
);
    line=findTag(line,PATTERN_ALIGN_RIGHT,matcher -> {
      if (config.verticalMode) {
        plugin.getLogger().warning("String_Node_Str");
      }
 else {
        startColumn[0]=ConfigManager.getCols() - 1;
      }
    }
);
    line=findTag(line,PATTERN_SORT,matcher -> {
      sortrules.addAll(Arrays.asList(matcher.group(1).split("String_Node_Str")));
    }
);
    line=findTag(line,PATTERN_COLUMN,matcher -> {
      if (config.verticalMode) {
        plugin.getLogger().warning("String_Node_Str");
      }
 else {
        startColumn[0]=Integer.parseInt(matcher.group(1));
        if (startColumn[0] > ConfigManager.getCols()) {
          plugin.getLogger().warning(String.format("String_Node_Str",startColumn[0],ConfigManager.getCols(),ConfigManager.getCols() - 1));
          startColumn[0]=ConfigManager.getCols() - 1;
        }
      }
    }
);
    line=findTag(line,PATTERN_ROW,matcher -> {
      if (!config.verticalMode) {
        plugin.getLogger().warning("String_Node_Str");
      }
 else {
        startColumn[0]=Integer.parseInt(matcher.group(1));
        if (startColumn[0] > ConfigManager.getRows()) {
          plugin.getLogger().warning(String.format("String_Node_Str",startColumn[0],ConfigManager.getRows(),ConfigManager.getRows() - 1));
          startColumn[0]=ConfigManager.getRows() - 1;
        }
      }
    }
);
    line=findTag(line,PATTERN_MAXPLAYERS,matcher -> {
      maxplayers[0]=Integer.parseInt(matcher.group(1));
    }
);
    sortrules.addAll(g_sort);
    PlayerSorter sorter=parseSortrules(sortrules);
    Matcher fillplayersMatcher=PATTERN_FILLPLAYERS.matcher(line);
    if (fillplayersMatcher.matches()) {
      SlotTemplate prefix=SlotTemplate.of(g_prefix,parseSlot(fillplayersMatcher.group("String_Node_Str")));
      SlotTemplate suffix=SlotTemplate.of(parseSlot(fillplayersMatcher.group("String_Node_Str")),g_suffix);
      String args=fillplayersMatcher.group("String_Node_Str");
      List<String> filter;
      if (args == null || args.isEmpty()) {
        filter=new ArrayList<>();
      }
 else {
        filter=new ArrayList<>(Arrays.asList(args.split("String_Node_Str")));
      }
      checkServer(filter);
      filter.addAll(g_filter);
      sections.add(group -> {
        List<String> finalFilters=new ArrayList<>();
        finalFilters.addAll(filter);
        finalFilters.addAll(group.getServerNames());
        return new FillPlayersSection(startColumn[0],finalFilters,prefix,suffix,sorter,maxplayers[0],playerLines,morePlayerLines);
      }
);
    }
 else {
      SlotTemplate slotTemplate=SlotTemplate.of(g_prefix,parseSlot(line),g_suffix);
      sections.add(group -> {
        ServerSection serverSection=new ServerSection(startColumn[0],group);
        serverSection.add(slotTemplate);
        return serverSection;
      }
);
    }
  }
  return new AutoFillPlayers(list,sections,config.showEmptyGroups);
}

Fixed version (ground truth):
public AutoFillPlayers parseServerSections(TabListConfig config,SlotTemplate g_prefix,SlotTemplate g_suffix,List<String> g_filter,List<String> g_sort,int g_maxPlayers,List<SlotTemplate> playerLines,List<SlotTemplate> morePlayerLines){
  Map<String,ServerInfo> servers=ProxyServer.getInstance().getServers();
  Set<String> serverSet=new HashSet<>(servers.keySet());
  HashMultimap<String,String> aliasToServerMap=HashMultimap.create();
  for (  Map.Entry<String,String> entry : BungeeTabListPlus.getInstance().getConfigManager().getMainConfig().serverAlias.entrySet()) {
    if (ProxyServer.getInstance().getServerInfo(entry.getKey()) == null) {
      BungeeTabListPlus.getInstance().getLogger().warning("String_Node_Str" + entry.getKey() + "String_Node_Str");
      continue;
    }
    aliasToServerMap.put(entry.getValue(),entry.getKey());
  }
  List<ServerGroup> list=new ArrayList<>();
  while (!serverSet.isEmpty()) {
    String server=serverSet.iterator().next();
    String alias=BungeeTabListPlus.getInstance().getConfigManager().getMainConfig().serverAlias.get(server);
    if (alias != null) {
      Set<String> strings=aliasToServerMap.get(alias);
      serverSet.removeAll(strings);
      list.add(GenericServerGroup.of(strings,alias));
    }
 else {
      serverSet.remove(server);
      list.add(GenericServerGroup.of(server));
    }
  }
  List<Function<ServerGroup,Section>> sections=new ArrayList<>();
  for (  String line : config.groupLines) {
    final int[] startColumn={-1};
    final List<String> sortrules=new ArrayList<>();
    final int[] maxplayers={g_maxPlayers};
    line=findTag(line,PATTERN_ALIGN_LEFT,matcher -> {
      if (config.verticalMode) {
        plugin.getLogger().warning("String_Node_Str");
      }
 else {
        startColumn[0]=0;
      }
    }
);
    line=findTag(line,PATTERN_ALIGN_RIGHT,matcher -> {
      if (config.verticalMode) {
        plugin.getLogger().warning("String_Node_Str");
      }
 else {
        startColumn[0]=ConfigManager.getCols() - 1;
      }
    }
);
    line=findTag(line,PATTERN_SORT,matcher -> {
      sortrules.addAll(Arrays.asList(matcher.group(1).split("String_Node_Str")));
    }
);
    line=findTag(line,PATTERN_COLUMN,matcher -> {
      if (config.verticalMode) {
        plugin.getLogger().warning("String_Node_Str");
      }
 else {
        startColumn[0]=Integer.parseInt(matcher.group(1));
        if (startColumn[0] > ConfigManager.getCols()) {
          plugin.getLogger().warning(String.format("String_Node_Str",startColumn[0],ConfigManager.getCols(),ConfigManager.getCols() - 1));
          startColumn[0]=ConfigManager.getCols() - 1;
        }
      }
    }
);
    line=findTag(line,PATTERN_ROW,matcher -> {
      if (!config.verticalMode) {
        plugin.getLogger().warning("String_Node_Str");
      }
 else {
        startColumn[0]=Integer.parseInt(matcher.group(1));
        if (startColumn[0] > ConfigManager.getRows()) {
          plugin.getLogger().warning(String.format("String_Node_Str",startColumn[0],ConfigManager.getRows(),ConfigManager.getRows() - 1));
          startColumn[0]=ConfigManager.getRows() - 1;
        }
      }
    }
);
    line=findTag(line,PATTERN_MAXPLAYERS,matcher -> {
      maxplayers[0]=Integer.parseInt(matcher.group(1));
    }
);
    sortrules.addAll(g_sort);
    PlayerSorter sorter=parseSortrules(sortrules);
    Matcher fillplayersMatcher=PATTERN_FILLPLAYERS.matcher(line);
    if (fillplayersMatcher.matches()) {
      SlotTemplate prefix=SlotTemplate.of(g_prefix,parseSlot(fillplayersMatcher.group("String_Node_Str")));
      SlotTemplate suffix=SlotTemplate.of(parseSlot(fillplayersMatcher.group("String_Node_Str")),g_suffix);
      String args=fillplayersMatcher.group("String_Node_Str");
      List<String> filter;
      if (args == null || args.isEmpty()) {
        filter=new ArrayList<>();
      }
 else {
        filter=new ArrayList<>(Arrays.asList(args.split("String_Node_Str")));
      }
      checkServer(filter);
      filter.addAll(g_filter);
      sections.add(group -> {
        List<String> finalFilters=new ArrayList<>();
        finalFilters.addAll(filter);
        finalFilters.addAll(group.getServerNames());
        return new FillPlayersSection(startColumn[0],finalFilters,prefix,suffix,sorter,maxplayers[0],playerLines,morePlayerLines);
      }
);
    }
 else {
      SlotTemplate slotTemplate=SlotTemplate.of(g_prefix,parseSlot(line),g_suffix);
      sections.add(group -> {
        ServerSection serverSection=new ServerSection(startColumn[0],group);
        serverSection.add(slotTemplate);
        return serverSection;
      }
);
    }
  }
  return new AutoFillPlayers(list,sections,config.showEmptyGroups);
}