Program: 175812
Project: 175812
Buggy source:
@Override public JComponent getUI(){
  JPanel ui=new JPanel(new ListDownLayout());
  ui.add(new JLabel("String_Node_Str"));
  JButton compare=new JButton("String_Node_Str");
  compare.addActionListener(l -> new CompareGens(this,blockGen));
  ui.add(compare);
  JButton dec=new JButton("String_Node_Str");
  dec.addActionListener(l -> textureSelected(null,null,SkelGen.this));
  ui.add(dec);
  JButton save=new JButton("String_Node_Str");
  save.addActionListener(new ActionListener(){
    @Override public void actionPerformed(    ActionEvent e){
      new SimpleFileChooser(tweed.frame.frame,true,"String_Node_Str",null,"String_Node_Str"){
        @Override public void heresTheFile(        File f) throws Throwable {
          Map<HalfFace,PlanSkeleton> store=new HashMap<>();
          for (          HalfFace f2 : SkelGen.this.block)           store.put(f2,((SuperFace)f2).skel);
          for (          HalfFace f2 : SkelGen.this.block) {
            SuperFace sf=(SuperFace)f2;
            sf.heights=null;
            sf.maxProfHeights=null;
            sf.colors=new ArrayList<>();
            for (            Bar b : sf.skel.plan.points.eIterator()) {
              SETag set=(SETag)GreebleHelper.getTag(b.tags,SETag.class);
              if (set != null)               set.se.prof=toProf(sf.skel.plan.profiles.get(b));
            }
            sf.skel=null;
            for (            HalfEdge e : f2) {
              SuperEdge se=(SuperEdge)e;
              if (se.profLine != null)               se.profLine.mega=null;
              if (e.over != null && ((SuperEdge)e.over).profLine != null)               ((SuperEdge)e.over).profLine.mega=null;
            }
          }
          blockGen=null;
          new XStream().toXML(SkelGen.this,new FileOutputStream(f));
          for (          HalfFace f2 : SkelGen.this.block)           ((SuperFace)f2).skel=store.get(f2);
        }
      }
;
    }
  }
);
  ui.add(save);
  return ui;
}

Fixed version (ground truth):
@Override public JComponent getUI(){
  JPanel ui=new JPanel(new ListDownLayout());
  ui.add(new JLabel("String_Node_Str"));
  JButton compare=new JButton("String_Node_Str");
  compare.addActionListener(l -> new CompareGens(this,blockGen));
  ui.add(compare);
  JButton dec=new JButton("String_Node_Str");
  dec.addActionListener(l -> textureSelected(null,null,SkelGen.this));
  ui.add(dec);
  JButton save=new JButton("String_Node_Str");
  save.addActionListener(new ActionListener(){
    @Override public void actionPerformed(    ActionEvent e){
      new SimpleFileChooser(tweed.frame.frame,true,"String_Node_Str",null,"String_Node_Str"){
        @Override public void heresTheFile(        File f) throws Throwable {
          HalfMesh2 nBlock=new HalfMesh2();
          for (          HalfFace f2 : SkelGen.this.block) {
            SuperFace sf=(SuperFace)f2;
            List<Bar> bars=new ArrayList();
            for (            Bar b : sf.skel.plan.points.eIterator())             bars.add(b);
            Collections.reverse(bars);
            HalfMesh2.Builder builder=new HalfMesh2.Builder(SuperEdge.class,SuperFace.class);
            builder.mesh=nBlock;
            for (            Bar b : bars)             builder.newPoint(b.start);
            SuperFace sf3=(SuperFace)builder.newFace();
            sf3.height=sf.height;
            sf3.maxProfHeights=new ArrayList<>(sf.maxProfHeights);
            HalfEdge h3=sf3.e;
            for (            Bar b : bars) {
              SuperEdge s3=(SuperEdge)h3;
              s3.prof=toProf(sf.skel.plan.profiles.get(b));
              h3=h3.next;
            }
          }
          new XStream().toXML(new SkelGen(nBlock,null,null),new FileOutputStream(f));
        }
      }
;
    }
  }
);
  ui.add(save);
  return ui;
}