Program: 39867
Project: 39867
Buggy source:
public Node generateNodeByJsonObject(JsonObject jsonObject,TabContent app) throws Exception {
  String type=jsonObject.getString("String_Node_Str");
  Node node;
  JsonArray jsonArray=new JsonArray();
switch (type == null ? "String_Node_Str" : type.toLowerCase()) {
case "String_Node_Str":
    Canvas canvas=new Canvas();
  node=canvas;
break;
case "String_Node_Str":
Form form=new Form();
form.setApp(app);
form.setChildren(jsonObject.getJsonArray("String_Node_Str"));
form.setAction(jsonObject.getString("String_Node_Str"));
form.setMethod(jsonObject.getString("String_Node_Str"));
node=form;
break;
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
ImageView imageView=new ImageView(jsonObject.getString("String_Node_Str"));
imageView.setImage(app.getPreload().get(jsonObject.getString("String_Node_Str")));
decorateControl(imageView,jsonObject);
node=imageView;
break;
case "String_Node_Str":
case "String_Node_Str":
TableView tableView=new TableView();
jsonArray.clear();
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
tableView.setHeader(jsonArray);
jsonArray.clear();
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
tableView.setValue(jsonArray);
tableView.setEditable(jsonObject.getBoolean("String_Node_Str"));
decorateControl(tableView,jsonObject);
node=tableView;
break;
case "String_Node_Str":
TextField textField=new TextField();
decorateControl(textField,jsonObject);
textField.setText(jsonObject.getString("String_Node_Str"));
node=textField;
break;
case "String_Node_Str":
Label label=new Label();
decorateControl(label,jsonObject);
label.setText(jsonObject.getString("String_Node_Str"));
node=label;
break;
case "String_Node_Str":
Hyperlink hyperlink=new Hyperlink();
hyperlink.setApp(app);
decorateControl(hyperlink,jsonObject);
hyperlink.setText(jsonObject.getString("String_Node_Str"));
hyperlink.setValue(jsonObject.getString("String_Node_Str"));
node=hyperlink;
break;
case "String_Node_Str":
Button button=new Button();
decorateControl(button,jsonObject);
button.setText(jsonObject.getString("String_Node_Str"));
node=button;
break;
case "String_Node_Str":
ChoiceBox choiceBox=new ChoiceBox();
decorateControl(choiceBox,jsonObject);
jsonArray.clear();
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
choiceBox.setItems(jsonArray);
choiceBox.setValue(jsonObject.getString("String_Node_Str"));
node=choiceBox;
break;
case "String_Node_Str":
PieChart pieChart=new PieChart();
decorateChart(pieChart,jsonObject);
pieChart.setData(jsonObject.getJsonObject("String_Node_Str"));
node=pieChart;
break;
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
AxisType xAxisType=AxisType.NUMBER;
if (jsonObject.getValue("String_Node_Str") != null && jsonObject.getValue("String_Node_Str") instanceof JsonArray && jsonObject.getJsonArray("String_Node_Str").size() > 0) {
if (!(jsonObject.getJsonArray("String_Node_Str").getValue(0) instanceof Number)) {
xAxisType=AxisType.CATEGORY;
}
}
AxisType yAxisType=AxisType.NUMBER;
if (jsonObject.getValue("String_Node_Str") != null && jsonObject.getValue("String_Node_Str") instanceof JsonObject && jsonObject.getJsonObject("String_Node_Str").fieldNames().size() > 0) {
String key=(String)jsonObject.getJsonObject("String_Node_Str").fieldNames().toArray()[0];
if (jsonObject.getJsonObject("String_Node_Str").getValue(key) instanceof JsonArray && jsonObject.getJsonObject("String_Node_Str").getJsonArray(key).size() > 0) {
if (!(jsonObject.getJsonObject("String_Node_Str").getJsonArray(key).getValue(0) instanceof Number) && !(jsonObject.getJsonObject("String_Node_Str").getJsonArray(key).getValue(0) instanceof JsonObject)) {
yAxisType=AxisType.CATEGORY;
}
 else if ((jsonObject.getJsonObject("String_Node_Str").getJsonArray(key).getValue(0) instanceof JsonObject && !(jsonObject.getJsonObject("String_Node_Str").getJsonArray(key).getJsonObject(0).getValue("String_Node_Str") instanceof Number))) {
yAxisType=AxisType.CATEGORY;
}
}
}
XYChart xyChart=new XYChart(type,xAxisType,yAxisType);
decorateChart(xyChart,jsonObject);
xyChart.setXScale(jsonObject.getJsonArray("String_Node_Str"));
xyChart.setXLabel(jsonObject.getString("String_Node_Str"));
xyChart.setYLabel(jsonObject.getString("String_Node_Str"));
xyChart.setData(jsonObject.getJsonObject("String_Node_Str"));
node=xyChart;
break;
case "String_Node_Str":
XYChart bubbleChart=new XYChart(type,AxisType.NUMBER,AxisType.NUMBER);
decorateChart(bubbleChart,jsonObject);
bubbleChart.setXLabel(jsonObject.getString("String_Node_Str"));
bubbleChart.setYLabel(jsonObject.getString("String_Node_Str"));
bubbleChart.setData(jsonObject.getJsonObject("String_Node_Str"));
node=bubbleChart;
break;
default :
Pane pane=new Pane();
jsonArray=jsonObject.getJsonArray("String_Node_Str");
if (jsonArray != null) {
for (Object jo : jsonArray) {
Node child=generateNodeByJsonObject((JsonObject)jo,app);
if (child.getNode() != null) pane.add(child);
}
}
node=pane;
break;
}
if (jsonObject.getString("String_Node_Str") != null && app.getScriptEngine() != null) {
node.setId(jsonObject.getString("String_Node_Str"));
app.getScriptEngine().put(jsonObject.getString("String_Node_Str"),node);
}
return node;
}

Fixed version (ground truth):
public Node generateNodeByJsonObject(JsonObject jsonObject,TabContent app) throws Exception {
  String type=jsonObject.getString("String_Node_Str");
  Node node;
  JsonArray jsonArray=new JsonArray();
switch (type == null ? "String_Node_Str" : type.toLowerCase()) {
case "String_Node_Str":
    Canvas canvas=new Canvas();
  node=canvas;
break;
case "String_Node_Str":
Form form=new Form();
form.setApp(app);
form.setChildren(jsonObject.getJsonArray("String_Node_Str"));
form.setAction(jsonObject.getString("String_Node_Str"));
form.setMethod(jsonObject.getString("String_Node_Str"));
node=form;
break;
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
ImageView imageView=new ImageView(jsonObject.getString("String_Node_Str"));
imageView.setImage(app.getPreload().get(jsonObject.getString("String_Node_Str")));
decorateControl(imageView,jsonObject);
node=imageView;
break;
case "String_Node_Str":
case "String_Node_Str":
TableView tableView=new TableView();
jsonArray.clear();
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
tableView.setHeader(jsonArray);
jsonArray.clear();
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
tableView.setValue(jsonArray);
tableView.setEditable(jsonObject.getBoolean("String_Node_Str"));
decorateControl(tableView,jsonObject);
node=tableView;
break;
case "String_Node_Str":
TextField textField=new TextField();
decorateControl(textField,jsonObject);
textField.setText(jsonObject.getString("String_Node_Str"));
node=textField;
break;
case "String_Node_Str":
Label label=new Label();
decorateControl(label,jsonObject);
label.setText(jsonObject.getString("String_Node_Str"));
node=label;
break;
case "String_Node_Str":
Hyperlink hyperlink=new Hyperlink();
hyperlink.setApp(app);
decorateControl(hyperlink,jsonObject);
hyperlink.setText(jsonObject.getString("String_Node_Str"));
hyperlink.setValue(jsonObject.getString("String_Node_Str"));
node=hyperlink;
break;
case "String_Node_Str":
Button button=new Button();
decorateControl(button,jsonObject);
button.setText(jsonObject.getString("String_Node_Str"));
node=button;
break;
case "String_Node_Str":
ChoiceBox choiceBox=new ChoiceBox();
decorateControl(choiceBox,jsonObject);
jsonArray.clear();
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
if (jsonObject.getJsonArray("String_Node_Str") != null) jsonArray.addAll(jsonObject.getJsonArray("String_Node_Str"));
choiceBox.setItems(jsonArray);
choiceBox.setValue(jsonObject.getString("String_Node_Str"));
node=choiceBox;
break;
case "String_Node_Str":
PieChart pieChart=new PieChart();
decorateChart(pieChart,jsonObject);
pieChart.setData(jsonObject.getJsonObject("String_Node_Str"));
node=pieChart;
break;
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
case "String_Node_Str":
AxisType xAxisType=AxisType.NUMBER;
if (jsonObject.getValue("String_Node_Str") != null && jsonObject.getValue("String_Node_Str") instanceof JsonArray && jsonObject.getJsonArray("String_Node_Str").size() > 0) {
if (!(jsonObject.getJsonArray("String_Node_Str").getValue(0) instanceof Number)) {
xAxisType=AxisType.CATEGORY;
}
}
AxisType yAxisType=AxisType.NUMBER;
if (jsonObject.getValue("String_Node_Str") != null && jsonObject.getValue("String_Node_Str") instanceof JsonObject && jsonObject.getJsonObject("String_Node_Str").fieldNames().size() > 0) {
String key=(String)jsonObject.getJsonObject("String_Node_Str").fieldNames().toArray()[0];
if (jsonObject.getJsonObject("String_Node_Str").getValue(key) instanceof JsonArray && jsonObject.getJsonObject("String_Node_Str").getJsonArray(key).size() > 0) {
if (!(jsonObject.getJsonObject("String_Node_Str").getJsonArray(key).getValue(0) instanceof Number) && !(jsonObject.getJsonObject("String_Node_Str").getJsonArray(key).getValue(0) instanceof JsonObject)) {
yAxisType=AxisType.CATEGORY;
}
 else if ((jsonObject.getJsonObject("String_Node_Str").getJsonArray(key).getValue(0) instanceof JsonObject && !(jsonObject.getJsonObject("String_Node_Str").getJsonArray(key).getJsonObject(0).getValue("String_Node_Str") instanceof Number))) {
yAxisType=AxisType.CATEGORY;
}
}
}
XYChart xyChart=new XYChart(type,xAxisType,yAxisType);
decorateChart(xyChart,jsonObject);
xyChart.setXScale(jsonObject.getJsonArray("String_Node_Str"));
xyChart.setXLabel(jsonObject.getString("String_Node_Str"));
xyChart.setYLabel(jsonObject.getString("String_Node_Str"));
xyChart.setData(jsonObject.getJsonObject("String_Node_Str"));
node=xyChart;
break;
case "String_Node_Str":
XYChart bubbleChart=new XYChart(type,AxisType.NUMBER,AxisType.NUMBER);
decorateChart(bubbleChart,jsonObject);
bubbleChart.setXLabel(jsonObject.getString("String_Node_Str"));
bubbleChart.setYLabel(jsonObject.getString("String_Node_Str"));
bubbleChart.setData(jsonObject.getJsonObject("String_Node_Str"));
node=bubbleChart;
break;
default :
Pane pane=new Pane();
jsonArray=jsonObject.getJsonArray("String_Node_Str");
if (jsonArray != null) {
for (Object jo : jsonArray) {
Node child=generateNodeByJsonObject((JsonObject)jo,app);
if (child.getNode() != null) pane.add(child);
}
}
node=pane;
break;
}
if (jsonObject.getString("String_Node_Str") != null) {
node.setId(jsonObject.getString("String_Node_Str"));
app.getContext().put(jsonObject.getString("String_Node_Str"),node);
}
return node;
}