Program: 5444
Project: 5444
Buggy source:
public void loadHomes(){
  File file=new File(homesPath);
  if (!(file.exists())) {
    file.mkdir();
  }
  file=new File(homesPath + homesFile);
  if (!file.exists()) {
    try {
      FileWriter fstream=new FileWriter(homesPath + homesFile);
      BufferedWriter out=new BufferedWriter(fstream);
      out.write("String_Node_Str");
      out.write("String_Node_Str");
      out.close();
    }
 catch (    Exception e) {
      log.warning(pdfFile.getName() + "String_Node_Str");
      this.getServer().getPluginManager().disablePlugin(this);
    }
  }
  try {
    FileReader fstream=new FileReader(homesPath + homesFile);
    BufferedReader reader=new BufferedReader(fstream);
    String line=reader.readLine().trim();
    while (line != null) {
      if (!line.startsWith("String_Node_Str")) {
        String[] values=line.split("String_Node_Str");
        double X=0, Y=0, Z=0;
        float pitch=0, yaw=0;
        World world=null;
        String name="String_Node_Str";
        try {
          if (values.length == 7) {
            X=Double.parseDouble(values[1]);
            Y=Double.parseDouble(values[2]);
            Z=Double.parseDouble(values[3]);
            pitch=Float.parseFloat(values[4]);
            yaw=Float.parseFloat(values[5]);
            world=getServer().getWorld(values[6]);
          }
 else           if (values.length == 8) {
            X=Double.parseDouble(values[1]);
            Y=Double.parseDouble(values[2]);
            Z=Double.parseDouble(values[3]);
            pitch=Float.parseFloat(values[4]);
            yaw=Float.parseFloat(values[5]);
            world=getServer().getWorld(values[6]);
            name=values[7];
          }
          if (world != null) {
            ArrayList<HomeLocation> homeList;
            if (!homeLocations.containsKey(values[0])) {
              homeList=new ArrayList<HomeLocation>();
            }
 else {
              homeList=homeLocations.get(values[0]);
            }
            homeList.add(new HomeLocation(name,new Location(world,X,Y,Z,yaw,pitch)));
            homeLocations.put(values[0],homeList);
          }
        }
 catch (        Exception e) {
        }
      }
      line=reader.readLine();
    }
    reader.close();
  }
 catch (  Exception e) {
    log.severe(pdfFile.getName() + "String_Node_Str");
    this.getServer().getPluginManager().disablePlugin(this);
  }
}

Fixed version (ground truth):
public void loadHomes(){
  File file=new File(homesPath);
  if (!(file.exists())) {
    file.mkdir();
  }
  file=new File(homesPath + homesFile);
  if (!file.exists()) {
    try {
      FileWriter fstream=new FileWriter(homesPath + homesFile);
      BufferedWriter out=new BufferedWriter(fstream);
      out.write("String_Node_Str");
      out.write("String_Node_Str");
      out.close();
    }
 catch (    Exception e) {
      log.warning(pdfFile.getName() + "String_Node_Str");
      this.getServer().getPluginManager().disablePlugin(this);
    }
  }
  try {
    FileReader fstream=new FileReader(homesPath + homesFile);
    BufferedReader reader=new BufferedReader(fstream);
    String line=reader.readLine().trim();
    while (line != null) {
      if (!line.startsWith("String_Node_Str")) {
        String[] values=line.split("String_Node_Str");
        double X=0, Y=0, Z=0;
        float pitch=0, yaw=0;
        String world="String_Node_Str";
        String name="String_Node_Str";
        try {
          if (values.length == 7) {
            X=Double.parseDouble(values[1]);
            Y=Double.parseDouble(values[2]);
            Z=Double.parseDouble(values[3]);
            pitch=Float.parseFloat(values[4]);
            yaw=Float.parseFloat(values[5]);
            world=values[6];
          }
 else           if (values.length == 8) {
            X=Double.parseDouble(values[1]);
            Y=Double.parseDouble(values[2]);
            Z=Double.parseDouble(values[3]);
            pitch=Float.parseFloat(values[4]);
            yaw=Float.parseFloat(values[5]);
            world=values[6];
            name=values[7];
          }
          if (world != null) {
            ArrayList<HomeLocation> homeList;
            if (!homeLocations.containsKey(values[0])) {
              homeList=new ArrayList<HomeLocation>();
            }
 else {
              homeList=homeLocations.get(values[0]);
            }
            homeList.add(new HomeLocation(name,world,X,Y,Z,pitch,yaw));
            homeLocations.put(values[0],homeList);
          }
        }
 catch (        Exception e) {
          if (line != null) {
            log.warning("String_Node_Str" + line);
          }
        }
      }
      line=reader.readLine();
    }
    reader.close();
  }
 catch (  Exception e) {
    log.severe(pdfFile.getName() + "String_Node_Str");
    this.getServer().getPluginManager().disablePlugin(this);
  }
}