Program: 175888
Project: 175888
Buggy source:
public static ImageFeatures readFeatures(File fFolder,MegaFeatures megaFeatures){
  Line mega=new Line(megaFeatures.megafacade);
  ImageFeatures out=new ImageFeatures();
  out.mega=megaFeatures;
  Line imageL=null;
  out.miniFacades=new ArrayList();
  double ppm=40;
{
    if (Tweed.DATA == null)     out.ortho=new File(fFolder,RENDERED_IMAGE_PNG);
 else     out.ortho=Paths.get(Tweed.DATA).relativize(new File(fFolder,RENDERED_IMAGE_PNG).toPath()).toFile();
    File rectFile=new File(fFolder,"String_Node_Str");
    if (rectFile.exists()) {
      if (Tweed.DATA == null)       out.rectified=rectFile;
 else       out.rectified=Paths.get(Tweed.DATA).relativize(rectFile.toPath()).toFile();
    }
 else     out.rectified=out.ortho;
  }
  int imageWidth=out.getRectified().getWidth(), imageHeight=out.getRectified().getHeight();
  double rectifiedToOrtho=out.getRectified().getWidth() / (double)out.getOrtho().getWidth();
{
    List<String> lines=null;
    try {
      lines=Files.readAllLines(new File(fFolder,"String_Node_Str").toPath());
    }
 catch (    IOException e) {
      System.err.println("String_Node_Str");
    }
    if (lines == null) {
      System.out.println("String_Node_Str" + fFolder);
      imageL=new Line(0,0,out.getRectified().getWidth() / ppm,0);
    }
 else {
      String plane=lines.get(1);
      String[] pVals=plane.split("String_Node_Str");
      Point2d a=new Point2d(Float.parseFloat(pVals[0]),Float.parseFloat(pVals[1]));
      Point2d b=new Point2d(Float.parseFloat(pVals[2]),Float.parseFloat(pVals[3]));
      imageL=new Line(a,b);
    }
  }
  out.start=mega.findPPram(imageL.start) * mega.length();
  out.end=mega.findPPram(imageL.end) * mega.length();
  try {
    File yFile=new File(fFolder,PARAMETERS_YML);
    if (yFile.exists()) {
      YamlReader fromVision=new YamlReader(new FileReader(yFile));
      Map m=(Map)fromVision.read();
      List yamlFac=(List)m.get("String_Node_Str");
      double maxW=0;
      if (yamlFac != null) {
        for (        Object o : yamlFac)         try {
          MiniFacade mf=new MiniFacade(out,(Map)o,imageWidth / (rectifiedToOrtho * ppm),imageHeight / ppm,rectifiedToOrtho * ppm,out.start);
          if (!mf.invalid())           out.miniFacades.add(mf);
          maxW=Math.max(maxW,(mf.left + mf.width - out.start));
        }
 catch (        Throwable th) {
          System.out.println("String_Node_Str" + yFile);
          th.printStackTrace();
        }
      }
    }
 else     System.out.println("String_Node_Str" + fFolder);
  }
 catch (  Throwable e) {
    e.printStackTrace();
  }
  return out;
}

Fixed version (ground truth):
public static ImageFeatures readFeatures(File fFolder,MegaFeatures megaFeatures){
  Line mega=new Line(megaFeatures.megafacade);
  ImageFeatures out=new ImageFeatures();
  out.mega=megaFeatures;
  Line imageL=null;
  out.miniFacades=new ArrayList();
{
    if (Tweed.DATA == null)     out.ortho=new File(fFolder,RENDERED_IMAGE_PNG);
 else     out.ortho=Paths.get(Tweed.DATA).relativize(new File(fFolder,RENDERED_IMAGE_PNG).toPath()).toFile();
    File rectFile=new File(fFolder,"String_Node_Str");
    if (rectFile.exists()) {
      if (Tweed.DATA == null)       out.rectified=rectFile;
 else       out.rectified=Paths.get(Tweed.DATA).relativize(rectFile.toPath()).toFile();
    }
 else     out.rectified=out.ortho;
  }
  int imageWidth=out.getRectified().getWidth(), imageHeight=out.getRectified().getHeight();
  double rectifiedToOrtho=out.getRectified().getWidth() / (double)out.getOrtho().getWidth();
{
    List<String> lines=null;
    try {
      lines=Files.readAllLines(new File(fFolder,"String_Node_Str").toPath());
    }
 catch (    IOException e) {
      System.err.println("String_Node_Str");
    }
    if (lines == null) {
      System.out.println("String_Node_Str" + fFolder);
      imageL=new Line(0,0,out.getRectified().getWidth() / FacadeTool.pixelsPerMeter,0);
    }
 else {
      String plane=lines.get(1);
      String[] pVals=plane.split("String_Node_Str");
      Point2d a=new Point2d(Float.parseFloat(pVals[0]),Float.parseFloat(pVals[1]));
      Point2d b=new Point2d(Float.parseFloat(pVals[2]),Float.parseFloat(pVals[3]));
      imageL=new Line(a,b);
    }
  }
  out.start=mega.findPPram(imageL.start) * mega.length();
  out.end=mega.findPPram(imageL.end) * mega.length();
  try {
    File yFile=new File(fFolder,PARAMETERS_YML);
    if (yFile.exists()) {
      YamlReader fromVision=new YamlReader(new FileReader(yFile));
      Map m=(Map)fromVision.read();
      List yamlFac=(List)m.get("String_Node_Str");
      double maxW=0;
      if (yamlFac != null) {
        for (        Object o : yamlFac)         try {
          MiniFacade mf=new MiniFacade(out,(Map)o,imageWidth / (rectifiedToOrtho * FacadeTool.pixelsPerMeter),imageHeight / FacadeTool.pixelsPerMeter,rectifiedToOrtho * FacadeTool.pixelsPerMeter,out.start);
          if (!mf.invalid())           out.miniFacades.add(mf);
          maxW=Math.max(maxW,(mf.left + mf.width - out.start));
        }
 catch (        Throwable th) {
          System.out.println("String_Node_Str" + yFile);
          th.printStackTrace();
        }
      }
    }
 else     System.out.println("String_Node_Str" + fFolder);
  }
 catch (  Throwable e) {
    e.printStackTrace();
  }
  return out;
}