Program: 131795
Project: 131795
Buggy source:
public static Trainer getModel(CommandLine cmd) throws ParseException {
  final String algorithm=cmd.hasOption("String_Node_Str") ? cmd.getOptionValue("String_Node_Str") : "String_Node_Str";
  final int iterations=cmd.hasOption("String_Node_Str") ? Integer.parseInt(cmd.getOptionValue("String_Node_Str")) : 10;
  final String modelName=cmd.hasOption("String_Node_Str") ? cmd.getOptionValue("String_Node_Str") : "String_Node_Str";
  final String parserName=cmd.hasOption("String_Node_Str") ? cmd.getOptionValue("String_Node_Str") : "String_Node_Str";
  final IlpFormulation formulation=cmd.hasOption("String_Node_Str") ? IlpFormulation.getById(cmd.getOptionValue("String_Node_Str")) : IlpFormulation.DP_PROJ;
  final double lambda=cmd.hasOption("String_Node_Str") ? Double.parseDouble(cmd.getOptionValue("String_Node_Str")) : 0.1;
  final int numThreads=cmd.hasOption("String_Node_Str") ? Integer.valueOf(cmd.getOptionValue("String_Node_Str")) : 2;
  Trainer trainer=null;
  if (algorithm.equals("String_Node_Str")) {
    ViterbiParser parser;
    MStep<DepTreebank> mStep;
    ModelFactory modelFactory;
    if (modelName.equals("String_Node_Str")) {
      if (parserName.equals("String_Node_Str")) {
        parser=new IlpViterbiParser(formulation,numThreads);
      }
 else       if (parserName.equals("String_Node_Str")) {
        parser=new IlpViterbiCorpusParser(formulation,numThreads);
      }
 else {
        throw new ParseException("String_Node_Str" + parserName);
      }
      mStep=new DmvMStep(lambda);
      modelFactory=new DmvModelFactory(new RandomWeightGenerator());
    }
 else {
      throw new ParseException("String_Node_Str" + modelName);
    }
    trainer=new ViterbiTrainer(parser,mStep,modelFactory,iterations);
  }
 else {
    throw new ParseException("String_Node_Str" + algorithm);
  }
  return trainer;
}

Fixed version (ground truth):
public static Trainer getModel(CommandLine cmd) throws ParseException {
  final String algorithm=cmd.hasOption("String_Node_Str") ? cmd.getOptionValue("String_Node_Str") : "String_Node_Str";
  final int iterations=cmd.hasOption("String_Node_Str") ? Integer.parseInt(cmd.getOptionValue("String_Node_Str")) : 10;
  final String modelName=cmd.hasOption("String_Node_Str") ? cmd.getOptionValue("String_Node_Str") : "String_Node_Str";
  final String parserName=cmd.hasOption("String_Node_Str") ? cmd.getOptionValue("String_Node_Str") : "String_Node_Str";
  final IlpFormulation formulation=cmd.hasOption("String_Node_Str") ? IlpFormulation.getById(cmd.getOptionValue("String_Node_Str")) : IlpFormulation.DP_PROJ;
  final double lambda=cmd.hasOption("String_Node_Str") ? Double.parseDouble(cmd.getOptionValue("String_Node_Str")) : 0.1;
  final int numThreads=cmd.hasOption("String_Node_Str") ? Integer.valueOf(cmd.getOptionValue("String_Node_Str")) : 2;
  Trainer trainer=null;
  if (algorithm.equals("String_Node_Str")) {
    ViterbiParser parser;
    MStep<DepTreebank> mStep;
    ModelFactory modelFactory;
    if (modelName.equals("String_Node_Str")) {
      if (parserName.equals("String_Node_Str")) {
        parser=new IlpViterbiParser(formulation,numThreads);
      }
 else       if (parserName.equals("String_Node_Str")) {
        parser=new IlpViterbiCorpusParser(formulation,numThreads);
      }
 else {
        throw new ParseException("String_Node_Str" + parserName);
      }
      mStep=new DmvMStep(lambda);
      modelFactory=new DmvModelFactory(new RandomWeightGenerator(lambda));
    }
 else {
      throw new ParseException("String_Node_Str" + modelName);
    }
    trainer=new ViterbiTrainer(parser,mStep,modelFactory,iterations);
  }
 else {
    throw new ParseException("String_Node_Str" + algorithm);
  }
  return trainer;
}