Program: 36596
Project: 36596
Buggy source:
@Override public void init(){
  table.setFixedCellSize(GUI.font.getValue().getSize() + 5);
  table.getSelectionModel().setSelectionMode(MULTIPLE);
  table.searchSetColumn(TITLE);
  table.setColumnStateFacory(f -> {
    double w=f == PATH || f == TITLE ? 150 : 50;
    return new ColumnInfo(f.toString(),f.ordinal(),f.isCommon(),w);
  }
);
  table.setColumnFactory(f -> {
    TableColumn<Metadata,?> c=new TableColumn(f.toString());
    c.setCellValueFactory(cf -> cf.getValue() == null ? null : new PojoV(cf.getValue().getField(f)));
    Pos a=f.getType().equals(String.class) ? CENTER_LEFT : CENTER_RIGHT;
    c.setCellFactory(f == RATING ? (Callback)App.ratingCell.getValue() : (Callback)p -> {
      TableCell<Metadata,Object> cell=new TableCell<Metadata,Object>(){
        @Override protected void updateItem(        Object item,        boolean empty){
          super.updateItem(item,empty);
          setText(empty ? "String_Node_Str" : f.toS(item,"String_Node_Str"));
        }
      }
;
      cell.setAlignment(a);
      return cell;
    }
);
    return c;
  }
);
  table.setColumnResizePolicy(resize -> {
    boolean b=UNCONSTRAINED_RESIZE_POLICY.call(resize);
    table.getColumn("String_Node_Str").ifPresent(i -> i.setPrefWidth(table.calculateIndexColumnWidth()));
    return b;
  }
);
  App.ratingCell.addListener((o,ov,nv) -> table.getColumn(RATING).ifPresent(c -> c.setCellFactory((Callback)nv)));
  columnInfo=table.getDefaultColumnInfo();
  table.setRowFactory(tbl -> new ImprovedTableRow<Metadata>().onLeftDoubleClick((r,e) -> {
    Playlist p=new Playlist(map(table.getItems(),Metadata::toPlaylist));
    PlaylistManager.playPlaylistFrom(p,r.getIndex());
  }
).onRightSingleClick((r,e) -> {
    if (!r.isSelected())     tbl.getSelectionModel().clearAndSelect(r.getIndex());
    contxt_menu.show(table,e);
  }
).styleRuleAdd("String_Node_Str",m -> Player.playingtem.get().same(m)));
  d4=Player.playingtem.subscribeToChanges(o -> table.updateStyleRules());
  table.setOnKeyReleased(e -> {
    if (e.getCode() == ENTER) {
      if (!table.getSelectionModel().isEmpty()) {
        Playlist p=new Playlist(map(table.getItems(),Metadata::toPlaylist));
        PlaylistManager.playPlaylistFrom(p,table.getSelectionModel().getSelectedIndex());
      }
    }
 else     if (e.getCode() == DELETE)     DB.removeItems(table.getSelectedItems());
 else     if (e.getCode() == ESCAPE)     table.getSelectionModel().clearSelection();
  }
);
  table.setOnDragOver_NoSelf(e -> {
    e.acceptTransferModes(COPY);
    e.consume();
  }
);
  table.setOnDragDropped(e -> {
    addNeditDo(DragUtil.getSongs(e),false);
    e.setDropCompleted(true);
    e.consume();
  }
);
  table.setOnDragDetected(e -> {
    if (e.getButton() == PRIMARY && !table.getSelectedItems().isEmpty() && table.isRowFull(table.getRowS(e.getSceneX(),e.getSceneY()))) {
      Dragboard db=table.startDragAndDrop(COPY);
      DragUtil.setItemList(table.getSelectedItemsCopy(),db);
    }
    e.consume();
  }
);
  table.setOnScroll(Event::consume);
  d2=Player.librarySelectedItemES.feedFrom(nonNullValuesOf(table.getSelectionModel().selectedItemProperty()));
  d3=Player.librarySelectedItemsES.feedFrom(changesOf(table.getSelectionModel().getSelectedItems()).map(i -> table.getSelectedItemsCopy()));
  changesOf(table.getSortOrder()).subscribe(c -> DB.library_sorter=c.getList().stream().map(column -> {
    Metadata.Field f=(Metadata.Field)column.getUserData();
    int type=column.getSortType() == ASCENDING ? 1 : -1;
    return (Comparator<Metadata>)(m1,m2) -> type * ((Comparable)m1.getField(f)).compareTo((m2.getField(f)));
  }
).reduce((m1,m2) -> 0,Comparator::thenComparing));
  taskInfo.setVisible(false);
  InfoTable<Metadata> infoL=new InfoTable(new Label(),table);
  infoL.textFactory=(all,list) -> {
    double d=list.stream().mapToDouble(Metadata::getLengthInMs).sum();
    return DEFAULT_TEXT_FACTORY.apply(all,list) + "String_Node_Str" + new FormattedDuration(d);
  }
;
  Region padding=new Region();
  HBox controls=new HBox(controlsBar,infoL.node,padding,taskInfo.message,taskInfo.progressIndicator);
  controls.setSpacing(7);
  controls.setAlignment(Pos.CENTER_LEFT);
  controls.setPadding(new Insets(0,5,0,0));
  HBox.setHgrow(padding,ALWAYS);
  addMenu.setText("String_Node_Str");
  remMenu.setText("String_Node_Str");
  Icons.setIcon(addMenu,FontAwesomeIconName.PLUS,"String_Node_Str","String_Node_Str");
  Icons.setIcon(remMenu,FontAwesomeIconName.MINUS,"String_Node_Str","String_Node_Str");
  content.getChildren().addAll(table.getRoot(),controls);
  VBox.setVgrow(table.getRoot(),ALWAYS);
}

Fixed version (ground truth):
@Override public void init(){
  table.setFixedCellSize(GUI.font.getValue().getSize() + 5);
  table.getSelectionModel().setSelectionMode(MULTIPLE);
  table.searchSetColumn(TITLE);
  table.setColumnStateFacory(f -> {
    double w=f == PATH || f == TITLE ? 150 : 50;
    return new ColumnInfo(f.toString(),f.ordinal(),f.isCommon(),w);
  }
);
  table.setColumnFactory(f -> {
    TableColumn<Metadata,?> c=new TableColumn(f.toString());
    c.setCellValueFactory(cf -> cf.getValue() == null ? null : new PojoV(cf.getValue().getField(f)));
    c.setCellFactory(f == RATING ? (Callback)App.ratingCell.getValue() : (Callback)col -> table.buildDefaultCell(f));
    return c;
  }
);
  table.setColumnResizePolicy(resize -> {
    boolean b=UNCONSTRAINED_RESIZE_POLICY.call(resize);
    table.getColumn("String_Node_Str").ifPresent(i -> i.setPrefWidth(table.calculateIndexColumnWidth()));
    return b;
  }
);
  App.ratingCell.addListener((o,ov,nv) -> table.getColumn(RATING).ifPresent(c -> c.setCellFactory((Callback)nv)));
  columnInfo=table.getDefaultColumnInfo();
  table.setRowFactory(tbl -> new ImprovedTableRow<Metadata>().onLeftDoubleClick((r,e) -> {
    Playlist p=new Playlist(map(table.getItems(),Metadata::toPlaylist));
    PlaylistManager.playPlaylistFrom(p,r.getIndex());
  }
).onRightSingleClick((r,e) -> {
    if (!r.isSelected())     tbl.getSelectionModel().clearAndSelect(r.getIndex());
    contxt_menu.show(table,e);
  }
).styleRuleAdd("String_Node_Str",m -> Player.playingtem.get().same(m)));
  d4=Player.playingtem.subscribeToChanges(o -> table.updateStyleRules());
  table.setOnKeyReleased(e -> {
    if (e.getCode() == ENTER) {
      if (!table.getSelectionModel().isEmpty()) {
        Playlist p=new Playlist(map(table.getItems(),Metadata::toPlaylist));
        PlaylistManager.playPlaylistFrom(p,table.getSelectionModel().getSelectedIndex());
      }
    }
 else     if (e.getCode() == DELETE)     DB.removeItems(table.getSelectedItems());
 else     if (e.getCode() == ESCAPE)     table.getSelectionModel().clearSelection();
  }
);
  table.setOnDragOver_NoSelf(e -> {
    e.acceptTransferModes(COPY);
    e.consume();
  }
);
  table.setOnDragDropped(e -> {
    addNeditDo(DragUtil.getSongs(e),editOnAdd.get());
    e.setDropCompleted(true);
    e.consume();
  }
);
  table.setOnDragDetected(e -> {
    if (e.getButton() == PRIMARY && !table.getSelectedItems().isEmpty() && table.isRowFull(table.getRowS(e.getSceneX(),e.getSceneY()))) {
      Dragboard db=table.startDragAndDrop(COPY);
      DragUtil.setItemList(table.getSelectedItemsCopy(),db);
    }
    e.consume();
  }
);
  table.setOnScroll(Event::consume);
  d2=Player.librarySelectedItemES.feedFrom(nonNullValuesOf(table.getSelectionModel().selectedItemProperty()));
  d3=Player.librarySelectedItemsES.feedFrom(changesOf(table.getSelectionModel().getSelectedItems()).map(i -> table.getSelectedItemsCopy()));
  changesOf(table.getSortOrder()).subscribe(c -> DB.library_sorter=c.getList().stream().map(column -> {
    Metadata.Field f=(Metadata.Field)column.getUserData();
    int type=column.getSortType() == ASCENDING ? 1 : -1;
    return (Comparator<Metadata>)(m1,m2) -> type * ((Comparable)m1.getField(f)).compareTo((m2.getField(f)));
  }
).reduce((m1,m2) -> 0,Comparator::thenComparing));
  taskInfo.setVisible(false);
  InfoTable<Metadata> infoL=new InfoTable(new Label(),table);
  infoL.textFactory=(all,list) -> {
    double d=list.stream().mapToDouble(Metadata::getLengthInMs).sum();
    return DEFAULT_TEXT_FACTORY.apply(all,list) + "String_Node_Str" + new FormattedDuration(d);
  }
;
  Region padding=new Region();
  HBox controls=new HBox(controlsBar,infoL.node,padding,taskInfo.message,taskInfo.progressIndicator);
  controls.setSpacing(7);
  controls.setAlignment(Pos.CENTER_LEFT);
  controls.setPadding(new Insets(0,5,0,0));
  HBox.setHgrow(padding,ALWAYS);
  addMenu.setText("String_Node_Str");
  remMenu.setText("String_Node_Str");
  Icons.setIcon(addMenu,FontAwesomeIconName.PLUS,"String_Node_Str","String_Node_Str");
  Icons.setIcon(remMenu,FontAwesomeIconName.MINUS,"String_Node_Str","String_Node_Str");
  gui.objects.ContextMenu.CheckMenuItem editOnAddmi=new gui.objects.ContextMenu.CheckMenuItem("String_Node_Str");
  editOnAddmi.selected.bindBidirectional(editOnAdd);
  controlsBar.getMenus().get(0).getItems().add(editOnAddmi);
  content.getChildren().addAll(table.getRoot(),controls);
  VBox.setVgrow(table.getRoot(),ALWAYS);
}