Program: 57984
Project: 57984
Buggy source:
@Override public boolean onCommand(final CommandCaller caller,final String[] args){
  PlotPlayer plr=(caller instanceof PlotPlayerCaller) ? (PlotPlayer)caller.getSuperCaller() : null;
  String name;
  if (plr == null) {
    name="String_Node_Str";
  }
 else {
    name=plr.getName();
  }
  if (!SetupUtils.setupMap.containsKey(name)) {
    final SetupObject object=new SetupObject();
    SetupUtils.setupMap.put(name,object);
    SetupUtils.manager.updateGenerators();
    sendMessage(plr,C.SETUP_INIT);
    displayGenerators(plr);
    return false;
  }
  if (args.length == 1) {
    if (args[0].equalsIgnoreCase("String_Node_Str")) {
      SetupUtils.setupMap.remove(name);
      MainUtil.sendMessage(plr,"String_Node_Str");
      return false;
    }
    if (args[0].equalsIgnoreCase("String_Node_Str")) {
      final SetupObject object=SetupUtils.setupMap.get(name);
      if (object.setup_index > 0) {
        object.setup_index--;
        final ConfigurationNode node=object.step[object.setup_index];
        sendMessage(plr,C.SETUP_STEP,object.setup_index + 1 + "String_Node_Str",node.getDescription(),node.getType().getType(),node.getDefaultValue() + "String_Node_Str");
        return false;
      }
 else       if (object.current > 0) {
        object.current--;
      }
    }
  }
  final SetupObject object=SetupUtils.setupMap.get(name);
  final int index=object.current;
switch (index) {
case 0:
{
      if ((args.length != 1) || !SetupUtils.generators.containsKey(args[0])) {
        final String prefix="String_Node_Str";
        MainUtil.sendMessage(plr,"String_Node_Str" + prefix + StringUtils.join(SetupUtils.generators.keySet(),prefix).replaceAll("String_Node_Str","String_Node_Str"));
        sendMessage(plr,C.SETUP_INIT);
        return false;
      }
      object.setupGenerator=args[0];
      object.current++;
      final String partial=Settings.ENABLE_CLUSTERS ? "String_Node_Str" : "String_Node_Str";
      MainUtil.sendMessage(plr,"String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ partial);
      break;
    }
case 1:
{
    List<String> allTypes=Arrays.asList(new String[]{"String_Node_Str","String_Node_Str","String_Node_Str"});
    List<String> allDesc=Arrays.asList(new String[]{"String_Node_Str","String_Node_Str","String_Node_Str"});
    ArrayList<String> types=new ArrayList<>();
    if (SetupUtils.generators.get(object.setupGenerator) instanceof PlotGenerator) {
      types.add("String_Node_Str");
    }
    types.add("String_Node_Str");
    if (Settings.ENABLE_CLUSTERS) {
      types.add("String_Node_Str");
    }
    if ((args.length != 1) || !types.contains(args[0].toLowerCase())) {
      MainUtil.sendMessage(plr,"String_Node_Str");
      for (      String type : types) {
        int i=allTypes.indexOf(type);
        if (type.equals("String_Node_Str")) {
          MainUtil.sendMessage(plr,"String_Node_Str" + type + "String_Node_Str"+ allDesc.get(i));
        }
 else {
          MainUtil.sendMessage(plr,"String_Node_Str" + type + "String_Node_Str"+ allDesc.get(i));
        }
      }
      return false;
    }
    object.type=allTypes.indexOf(args[0].toLowerCase());
    ChunkGenerator gen=SetupUtils.generators.get(object.setupGenerator);
    if (object.type == 0) {
      object.current++;
      if (object.step == null) {
        object.plotManager=object.setupGenerator;
        object.step=((PlotGenerator)SetupUtils.generators.get(object.plotManager)).getNewPlotWorld(null).getSettingNodes();
        ((PlotGenerator)SetupUtils.generators.get(object.plotManager)).processSetup(object);
      }
      if (object.step.length == 0) {
        object.current=4;
        MainUtil.sendMessage(plr,"String_Node_Str");
        object.setup_index=0;
        return true;
      }
      final ConfigurationNode step=object.step[object.setup_index];
      sendMessage(plr,C.SETUP_STEP,object.setup_index + 1 + "String_Node_Str",step.getDescription(),step.getType().getType(),step.getDefaultValue() + "String_Node_Str");
    }
 else {
      if (gen instanceof PlotGenerator) {
        object.plotManager=object.setupGenerator;
        object.setupGenerator=null;
        object.step=((PlotGenerator)SetupUtils.generators.get(object.plotManager)).getNewPlotWorld(null).getSettingNodes();
        ((PlotGenerator)SetupUtils.generators.get(object.plotManager)).processSetup(object);
      }
 else {
        object.plotManager="String_Node_Str";
        MainUtil.sendMessage(plr,"String_Node_Str");
        MainUtil.sendMessage(plr,"String_Node_Str");
        object.step=((PlotGenerator)SetupUtils.generators.get(object.plotManager)).getNewPlotWorld(null).getSettingNodes();
      }
      MainUtil.sendMessage(plr,"String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str");
    }
    object.current++;
    break;
  }
case 2:
{
  final List<String> terrain=Arrays.asList(new String[]{"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"});
  if ((args.length != 1) || !terrain.contains(args[0].toLowerCase())) {
    MainUtil.sendMessage(plr,"String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str");
    return false;
  }
  object.terrain=terrain.indexOf(args[0].toLowerCase());
  object.current++;
  if (object.step == null) {
    object.step=((PlotGenerator)SetupUtils.generators.get(object.plotManager)).getNewPlotWorld(null).getSettingNodes();
  }
  final ConfigurationNode step=object.step[object.setup_index];
  sendMessage(plr,C.SETUP_STEP,object.setup_index + 1 + "String_Node_Str",step.getDescription(),step.getType().getType(),step.getDefaultValue() + "String_Node_Str");
  break;
}
case 3:
{
if (object.setup_index == object.step.length) {
  MainUtil.sendMessage(plr,"String_Node_Str");
  object.setup_index=0;
  object.current++;
  return true;
}
ConfigurationNode step=object.step[object.setup_index];
if (args.length < 1) {
  sendMessage(plr,C.SETUP_STEP,object.setup_index + 1 + "String_Node_Str",step.getDescription(),step.getType().getType(),step.getDefaultValue() + "String_Node_Str");
  return false;
}
final boolean valid=step.isValid(args[0]);
if (valid) {
  sendMessage(plr,C.SETUP_VALID_ARG,step.getConstant(),args[0]);
  step.setValue(args[0]);
  object.setup_index++;
  if (object.setup_index == object.step.length) {
    onCommand(caller,args);
    return false;
  }
  step=object.step[object.setup_index];
  sendMessage(plr,C.SETUP_STEP,object.setup_index + 1 + "String_Node_Str",step.getDescription(),step.getType().getType(),step.getDefaultValue() + "String_Node_Str");
  return false;
}
 else {
  sendMessage(plr,C.SETUP_INVALID_ARG,args[0],step.getConstant());
  sendMessage(plr,C.SETUP_STEP,object.setup_index + 1 + "String_Node_Str",step.getDescription(),step.getType().getType(),step.getDefaultValue() + "String_Node_Str");
  return false;
}
}
case 4:
{
if (args.length != 1) {
MainUtil.sendMessage(plr,"String_Node_Str");
return false;
}
if (BlockManager.manager.isWorld(args[0])) {
MainUtil.sendMessage(plr,"String_Node_Str");
}
object.world=args[0];
SetupUtils.setupMap.remove(name);
final String world;
if (object.setupManager == null) {
world=SetupUtils.manager.setupWorld(object);
}
 else {
world=object.setupManager.setupWorld(object);
}
try {
if (plr != null) {
  plr.teleport(BlockManager.manager.getSpawn(world));
}
}
 catch (final Exception e) {
plr.sendMessage("String_Node_Str");
e.printStackTrace();
}
sendMessage(plr,C.SETUP_FINISHED,object.world);
SetupUtils.setupMap.remove(name);
}
}
return false;
}

Fixed version (ground truth):
@Override public boolean onCommand(final CommandCaller caller,final String[] args){
  PlotPlayer plr=(caller instanceof PlotPlayerCaller) ? (PlotPlayer)caller.getSuperCaller() : null;
  String name;
  if (plr == null) {
    name="String_Node_Str";
  }
 else {
    name=plr.getName();
  }
  if (!SetupUtils.setupMap.containsKey(name)) {
    final SetupObject object=new SetupObject();
    SetupUtils.setupMap.put(name,object);
    SetupUtils.manager.updateGenerators();
    sendMessage(plr,C.SETUP_INIT);
    displayGenerators(plr);
    return false;
  }
  if (args.length == 1) {
    if (args[0].equalsIgnoreCase("String_Node_Str")) {
      SetupUtils.setupMap.remove(name);
      MainUtil.sendMessage(plr,"String_Node_Str");
      return false;
    }
    if (args[0].equalsIgnoreCase("String_Node_Str")) {
      final SetupObject object=SetupUtils.setupMap.get(name);
      if (object.setup_index > 0) {
        object.setup_index--;
        final ConfigurationNode node=object.step[object.setup_index];
        sendMessage(plr,C.SETUP_STEP,object.setup_index + 1 + "String_Node_Str",node.getDescription(),node.getType().getType(),node.getDefaultValue() + "String_Node_Str");
        return false;
      }
 else       if (object.current > 0) {
        object.current--;
      }
    }
  }
  final SetupObject object=SetupUtils.setupMap.get(name);
  final int index=object.current;
switch (index) {
case 0:
{
      if ((args.length != 1) || !SetupUtils.generators.containsKey(args[0])) {
        final String prefix="String_Node_Str";
        MainUtil.sendMessage(plr,"String_Node_Str" + prefix + StringUtils.join(SetupUtils.generators.keySet(),prefix).replaceAll("String_Node_Str","String_Node_Str"));
        sendMessage(plr,C.SETUP_INIT);
        return false;
      }
      object.setupGenerator=args[0];
      object.current++;
      final String partial=Settings.ENABLE_CLUSTERS ? "String_Node_Str" : "String_Node_Str";
      MainUtil.sendMessage(plr,"String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ partial);
      break;
    }
case 1:
{
    List<String> allTypes=Arrays.asList(new String[]{"String_Node_Str","String_Node_Str","String_Node_Str"});
    List<String> allDesc=Arrays.asList(new String[]{"String_Node_Str","String_Node_Str","String_Node_Str"});
    ArrayList<String> types=new ArrayList<>();
    if (SetupUtils.generators.get(object.setupGenerator) instanceof BukkitPlotGenerator) {
      types.add("String_Node_Str");
    }
    types.add("String_Node_Str");
    if (Settings.ENABLE_CLUSTERS) {
      types.add("String_Node_Str");
    }
    if ((args.length != 1) || !types.contains(args[0].toLowerCase())) {
      MainUtil.sendMessage(plr,"String_Node_Str");
      for (      String type : types) {
        int i=allTypes.indexOf(type);
        if (type.equals("String_Node_Str")) {
          MainUtil.sendMessage(plr,"String_Node_Str" + type + "String_Node_Str"+ allDesc.get(i));
        }
 else {
          MainUtil.sendMessage(plr,"String_Node_Str" + type + "String_Node_Str"+ allDesc.get(i));
        }
      }
      return false;
    }
    object.type=allTypes.indexOf(args[0].toLowerCase());
    ChunkGenerator gen=SetupUtils.generators.get(object.setupGenerator);
    if (object.type == 0) {
      object.current++;
      if (object.step == null) {
        object.plotManager=object.setupGenerator;
        object.step=((BukkitPlotGenerator)SetupUtils.generators.get(object.plotManager)).getNewPlotWorld(null).getSettingNodes();
        ((BukkitPlotGenerator)SetupUtils.generators.get(object.plotManager)).processSetup(object);
      }
      if (object.step.length == 0) {
        object.current=4;
        MainUtil.sendMessage(plr,"String_Node_Str");
        object.setup_index=0;
        return true;
      }
      final ConfigurationNode step=object.step[object.setup_index];
      sendMessage(plr,C.SETUP_STEP,object.setup_index + 1 + "String_Node_Str",step.getDescription(),step.getType().getType(),step.getDefaultValue() + "String_Node_Str");
    }
 else {
      if (gen instanceof BukkitPlotGenerator) {
        object.plotManager=object.setupGenerator;
        object.setupGenerator=null;
        object.step=((BukkitPlotGenerator)SetupUtils.generators.get(object.plotManager)).getNewPlotWorld(null).getSettingNodes();
        ((BukkitPlotGenerator)SetupUtils.generators.get(object.plotManager)).processSetup(object);
      }
 else {
        object.plotManager="String_Node_Str";
        MainUtil.sendMessage(plr,"String_Node_Str");
        MainUtil.sendMessage(plr,"String_Node_Str");
        object.step=((BukkitPlotGenerator)SetupUtils.generators.get(object.plotManager)).getNewPlotWorld(null).getSettingNodes();
      }
      MainUtil.sendMessage(plr,"String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str");
    }
    object.current++;
    break;
  }
case 2:
{
  final List<String> terrain=Arrays.asList(new String[]{"String_Node_Str","String_Node_Str","String_Node_Str","String_Node_Str"});
  if ((args.length != 1) || !terrain.contains(args[0].toLowerCase())) {
    MainUtil.sendMessage(plr,"String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str"+ "String_Node_Str");
    return false;
  }
  object.terrain=terrain.indexOf(args[0].toLowerCase());
  object.current++;
  if (object.step == null) {
    object.step=((BukkitPlotGenerator)SetupUtils.generators.get(object.plotManager)).getNewPlotWorld(null).getSettingNodes();
  }
  final ConfigurationNode step=object.step[object.setup_index];
  sendMessage(plr,C.SETUP_STEP,object.setup_index + 1 + "String_Node_Str",step.getDescription(),step.getType().getType(),step.getDefaultValue() + "String_Node_Str");
  break;
}
case 3:
{
if (object.setup_index == object.step.length) {
  MainUtil.sendMessage(plr,"String_Node_Str");
  object.setup_index=0;
  object.current++;
  return true;
}
ConfigurationNode step=object.step[object.setup_index];
if (args.length < 1) {
  sendMessage(plr,C.SETUP_STEP,object.setup_index + 1 + "String_Node_Str",step.getDescription(),step.getType().getType(),step.getDefaultValue() + "String_Node_Str");
  return false;
}
final boolean valid=step.isValid(args[0]);
if (valid) {
  sendMessage(plr,C.SETUP_VALID_ARG,step.getConstant(),args[0]);
  step.setValue(args[0]);
  object.setup_index++;
  if (object.setup_index == object.step.length) {
    onCommand(caller,args);
    return false;
  }
  step=object.step[object.setup_index];
  sendMessage(plr,C.SETUP_STEP,object.setup_index + 1 + "String_Node_Str",step.getDescription(),step.getType().getType(),step.getDefaultValue() + "String_Node_Str");
  return false;
}
 else {
  sendMessage(plr,C.SETUP_INVALID_ARG,args[0],step.getConstant());
  sendMessage(plr,C.SETUP_STEP,object.setup_index + 1 + "String_Node_Str",step.getDescription(),step.getType().getType(),step.getDefaultValue() + "String_Node_Str");
  return false;
}
}
case 4:
{
if (args.length != 1) {
MainUtil.sendMessage(plr,"String_Node_Str");
return false;
}
if (BlockManager.manager.isWorld(args[0])) {
MainUtil.sendMessage(plr,"String_Node_Str");
}
object.world=args[0];
SetupUtils.setupMap.remove(name);
final String world;
if (object.setupManager == null) {
world=SetupUtils.manager.setupWorld(object);
}
 else {
world=object.setupManager.setupWorld(object);
}
try {
if (plr != null) {
  plr.teleport(BlockManager.manager.getSpawn(world));
}
}
 catch (final Exception e) {
plr.sendMessage("String_Node_Str");
e.printStackTrace();
}
sendMessage(plr,C.SETUP_FINISHED,object.world);
SetupUtils.setupMap.remove(name);
}
}
return false;
}