Program: 161958
Project: 161958
Buggy source:
static DocumentModel modelFromString(String inString){
  DocumentModel model=new DocumentModel();
  JsonParser parser=new JsonParser();
  JsonObject topDict=parser.parse(inString).getAsJsonObject();
  if (topDict.getAsJsonArray("String_Node_Str") != null) {
    JsonArray colorArray=topDict.getAsJsonArray("String_Node_Str");
    if (colorArray.size() == 4)     model.backgroundColor=DocumentModel.colorFromRGBAArray(colorArray);
 else     if (colorArray.size() == 3)     model.backgroundColor=DocumentModel.colorFromRGBArray(colorArray);
  }
  if (topDict.get("String_Node_Str") != null)   model.pdFile=topDict.get("String_Node_Str").getAsString();
  if (topDict.get("String_Node_Str") != null) {
    if ((topDict.get("String_Node_Str").getAsString()).equals("String_Node_Str"))     model.canvasType=CanvasType.canvasTypeIPhone3p5Inch;
    if ((topDict.get("String_Node_Str").getAsString()).equals("String_Node_Str"))     model.canvasType=CanvasType.canvasTypeIPhone4Inch;
    if ((topDict.get("String_Node_Str").getAsString()).equals("String_Node_Str"))     model.canvasType=CanvasType.canvasTypeIPad;
    if ((topDict.get("String_Node_Str").getAsString()).equals("String_Node_Str"))     model.canvasType=CanvasType.canvasTypeAndroid7Inch;
  }
  if (topDict.get("String_Node_Str") != null)   model.isOrientationLandscape=topDict.get("String_Node_Str").getAsBoolean();
  if (topDict.get("String_Node_Str") != null)   model.isPageScrollShortEnd=topDict.get("String_Node_Str").getAsBoolean();
  if (topDict.get("String_Node_Str") != null)   model.pageCount=topDict.get("String_Node_Str").getAsInt();
  if (topDict.get("String_Node_Str") != null)   model.startPageIndex=topDict.get("String_Node_Str").getAsInt();
  if (topDict.get("String_Node_Str") != null)   model.port=topDict.get("String_Node_Str").getAsInt();
  if (topDict.get("String_Node_Str") != null)   model.version=topDict.get("String_Node_Str").getAsFloat();
  JsonArray controlDictArray;
  if (topDict.get("String_Node_Str") != null) {
    controlDictArray=topDict.get("String_Node_Str").getAsJsonArray();
    for (int i=0; i < controlDictArray.size(); i++) {
      JsonObject guiDict=controlDictArray.get(i).getAsJsonObject();
      MMPControl control;
      if (guiDict.get("String_Node_Str") == null)       continue;
      String classString=guiDict.get("String_Node_Str").getAsString();
      Rectangle newFrame=new Rectangle(0,0,100,100);
      if (guiDict.get("String_Node_Str") != null) {
        JsonArray frameRectArray=guiDict.getAsJsonArray("String_Node_Str");
        newFrame=new Rectangle((int)frameRectArray.get(0).getAsFloat(),(int)frameRectArray.get(1).getAsFloat(),(int)frameRectArray.get(2).getAsFloat(),(int)frameRectArray.get(3).getAsFloat());
      }
      Color color=new Color(1f,1f,1f,1f);
      if (guiDict.getAsJsonArray("String_Node_Str") != null) {
        JsonArray colorArray=guiDict.getAsJsonArray("String_Node_Str");
        if (colorArray.size() == 4)         color=DocumentModel.colorFromRGBAArray(colorArray);
 else         if (colorArray.size() == 3)         color=DocumentModel.colorFromRGBArray(colorArray);
      }
      Color highlightColor=Color.RED;
      if (guiDict.getAsJsonArray("String_Node_Str") != null) {
        JsonArray highlightColorArray=guiDict.getAsJsonArray("String_Node_Str");
        if (highlightColorArray.size() == 4)         highlightColor=DocumentModel.colorFromRGBAArray(highlightColorArray);
 else         if (highlightColorArray.size() == 3)         highlightColor=DocumentModel.colorFromRGBArray(highlightColorArray);
      }
      if (classString.equals("String_Node_Str")) {
        control=new MMPSlider(newFrame);
        if (guiDict.get("String_Node_Str") != null)         ((MMPSlider)control).setIsHorizontal(guiDict.get("String_Node_Str").getAsBoolean());
        if (guiDict.get("String_Node_Str") != null)         ((MMPSlider)control).setRange(guiDict.get("String_Node_Str").getAsInt());
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPKnob(newFrame);
        Color indicatorColor=Color.WHITE;
        if (guiDict.get("String_Node_Str") != null) {
          indicatorColor=DocumentModel.colorFromRGBAArray(guiDict.get("String_Node_Str").getAsJsonArray());
          ((MMPKnob)control).setIndicatorColor(indicatorColor);
        }
        if (guiDict.get("String_Node_Str") != null)         ((MMPKnob)control).setRange(guiDict.get("String_Node_Str").getAsInt());
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPButton(newFrame);
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPToggle(newFrame);
        if (guiDict.get("String_Node_Str") != null)         ((MMPToggle)control).setBorderThickness(guiDict.get("String_Node_Str").getAsInt());
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPLabel(newFrame);
        if (guiDict.get("String_Node_Str") != null)         ((MMPLabel)control).setStringValue(guiDict.get("String_Node_Str").getAsString());
        if (guiDict.get("String_Node_Str") != null)         ((MMPLabel)control).setTextSize(guiDict.get("String_Node_Str").getAsInt());
        if (guiDict.get("String_Node_Str") != null && guiDict.get("String_Node_Str") != null)         ((MMPLabel)control).setFontFamilyAndName(guiDict.get("String_Node_Str").getAsString(),guiDict.get("String_Node_Str").getAsString());
        if (guiDict.get("String_Node_Str") != null)         ((MMPLabel)control).setAndroidFontName(guiDict.get("String_Node_Str").getAsString());
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPXYSlider(newFrame);
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPGrid(newFrame);
        if (guiDict.get("String_Node_Str") != null) {
          JsonArray dim=guiDict.get("String_Node_Str").getAsJsonArray();
          ((MMPGrid)control).setDimX(dim.get(0).getAsInt());
          ((MMPGrid)control).setDimY(dim.get(1).getAsInt());
        }
        if (guiDict.get("String_Node_Str") != null)         ((MMPGrid)control).setBorderThickness(guiDict.get("String_Node_Str").getAsInt());
        if (guiDict.get("String_Node_Str") != null)         ((MMPGrid)control).setCellPadding(guiDict.get("String_Node_Str").getAsInt());
        if (guiDict.get("String_Node_Str") != null) {
          ((MMPGrid)control).setMode(guiDict.get("String_Node_Str").getAsInt());
        }
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPPanel(newFrame);
        if (guiDict.get("String_Node_Str") != null)         ((MMPPanel)control).setImagePath(guiDict.get("String_Node_Str").getAsString());
        if (guiDict.get("String_Node_Str") != null)         ((MMPPanel)control).shouldPassTouches=(guiDict.get("String_Node_Str").getAsBoolean());
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPMultiSlider(newFrame);
        if (guiDict.get("String_Node_Str") != null)         ((MMPMultiSlider)control).setRange(guiDict.get("String_Node_Str").getAsInt());
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPLCD(newFrame);
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPMultiTouch(newFrame);
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPMenu(newFrame);
        if (guiDict.get("String_Node_Str") != null)         ((MMPMenu)control).setTitleString(guiDict.get("String_Node_Str").getAsString());
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPTable(newFrame);
        if (guiDict.get("String_Node_Str") != null)         ((MMPTable)control).setMode(guiDict.get("String_Node_Str").getAsInt());
        if (guiDict.get("String_Node_Str") != null) {
          Color selectionColor=DocumentModel.colorFromRGBAArray(guiDict.get("String_Node_Str").getAsJsonArray());
          ((MMPTable)control).setSelectionColor(selectionColor);
        }
      }
 else {
        control=new MMPUnknown(newFrame);
        ((MMPUnknown)control).setBadName(classString);
        Type collectionType=new TypeToken<Map<String,Object>>(){
        }
.getType();
        ((MMPUnknown)control).badGUIDict=gson.fromJson(guiDict,collectionType);
      }
      control.setColor(color);
      control.setHighlightColor(highlightColor);
      if (guiDict.get("String_Node_Str") != null) {
        control.setAddress(guiDict.get("String_Node_Str").getAsString());
        model.controlArray.add(control);
      }
    }
  }
  return model;
}

Fixed version (ground truth):
static DocumentModel modelFromString(String inString){
  DocumentModel model=new DocumentModel();
  JsonParser parser=new JsonParser();
  JsonObject topDict=parser.parse(inString).getAsJsonObject();
  if (topDict.getAsJsonArray("String_Node_Str") != null) {
    JsonArray colorArray=topDict.getAsJsonArray("String_Node_Str");
    if (colorArray.size() == 4)     model.backgroundColor=DocumentModel.colorFromRGBAArray(colorArray);
 else     if (colorArray.size() == 3)     model.backgroundColor=DocumentModel.colorFromRGBArray(colorArray);
  }
  if (topDict.get("String_Node_Str") != null)   model.pdFile=topDict.get("String_Node_Str").getAsString();
  if (topDict.get("String_Node_Str") != null) {
    if ((topDict.get("String_Node_Str").getAsString()).equals("String_Node_Str"))     model.canvasType=CanvasType.canvasTypeIPhone3p5Inch;
    if ((topDict.get("String_Node_Str").getAsString()).equals("String_Node_Str"))     model.canvasType=CanvasType.canvasTypeIPhone4Inch;
    if ((topDict.get("String_Node_Str").getAsString()).equals("String_Node_Str"))     model.canvasType=CanvasType.canvasTypeIPad;
    if ((topDict.get("String_Node_Str").getAsString()).equals("String_Node_Str"))     model.canvasType=CanvasType.canvasTypeAndroid7Inch;
  }
  if (topDict.get("String_Node_Str") != null)   model.isOrientationLandscape=topDict.get("String_Node_Str").getAsBoolean();
  if (topDict.get("String_Node_Str") != null)   model.isPageScrollShortEnd=topDict.get("String_Node_Str").getAsBoolean();
  if (topDict.get("String_Node_Str") != null)   model.pageCount=topDict.get("String_Node_Str").getAsInt();
  if (topDict.get("String_Node_Str") != null)   model.startPageIndex=topDict.get("String_Node_Str").getAsInt();
  if (topDict.get("String_Node_Str") != null)   model.port=topDict.get("String_Node_Str").getAsInt();
  if (topDict.get("String_Node_Str") != null)   model.version=topDict.get("String_Node_Str").getAsFloat();
  JsonArray controlDictArray;
  if (topDict.get("String_Node_Str") != null) {
    controlDictArray=topDict.get("String_Node_Str").getAsJsonArray();
    for (int i=0; i < controlDictArray.size(); i++) {
      JsonObject guiDict=controlDictArray.get(i).getAsJsonObject();
      MMPControl control;
      if (guiDict.get("String_Node_Str") == null)       continue;
      String classString=guiDict.get("String_Node_Str").getAsString();
      Rectangle newFrame=new Rectangle(0,0,100,100);
      if (guiDict.get("String_Node_Str") != null) {
        JsonArray frameRectArray=guiDict.getAsJsonArray("String_Node_Str");
        newFrame=new Rectangle((int)frameRectArray.get(0).getAsFloat(),(int)frameRectArray.get(1).getAsFloat(),(int)frameRectArray.get(2).getAsFloat(),(int)frameRectArray.get(3).getAsFloat());
      }
      Color color=new Color(1f,1f,1f,1f);
      if (guiDict.getAsJsonArray("String_Node_Str") != null) {
        JsonArray colorArray=guiDict.getAsJsonArray("String_Node_Str");
        if (colorArray.size() == 4)         color=DocumentModel.colorFromRGBAArray(colorArray);
 else         if (colorArray.size() == 3)         color=DocumentModel.colorFromRGBArray(colorArray);
      }
      Color highlightColor=Color.RED;
      if (guiDict.getAsJsonArray("String_Node_Str") != null) {
        JsonArray highlightColorArray=guiDict.getAsJsonArray("String_Node_Str");
        if (highlightColorArray.size() == 4)         highlightColor=DocumentModel.colorFromRGBAArray(highlightColorArray);
 else         if (highlightColorArray.size() == 3)         highlightColor=DocumentModel.colorFromRGBArray(highlightColorArray);
      }
      if (classString.equals("String_Node_Str")) {
        control=new MMPSlider(newFrame);
        if (guiDict.get("String_Node_Str") != null)         ((MMPSlider)control).setIsHorizontal(guiDict.get("String_Node_Str").getAsBoolean());
        if (guiDict.get("String_Node_Str") != null)         ((MMPSlider)control).setRange(guiDict.get("String_Node_Str").getAsInt());
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPKnob(newFrame);
        Color indicatorColor=Color.WHITE;
        if (guiDict.get("String_Node_Str") != null) {
          indicatorColor=DocumentModel.colorFromRGBAArray(guiDict.get("String_Node_Str").getAsJsonArray());
          ((MMPKnob)control).setIndicatorColor(indicatorColor);
        }
        if (guiDict.get("String_Node_Str") != null)         ((MMPKnob)control).setRange(guiDict.get("String_Node_Str").getAsInt());
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPButton(newFrame);
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPToggle(newFrame);
        if (guiDict.get("String_Node_Str") != null)         ((MMPToggle)control).setBorderThickness(guiDict.get("String_Node_Str").getAsInt());
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPLabel(newFrame);
        if (guiDict.get("String_Node_Str") != null)         ((MMPLabel)control).setStringValue(guiDict.get("String_Node_Str").getAsString());
        if (guiDict.get("String_Node_Str") != null)         ((MMPLabel)control).setTextSize(guiDict.get("String_Node_Str").getAsInt());
        if (guiDict.get("String_Node_Str") != null && guiDict.get("String_Node_Str") != null)         ((MMPLabel)control).setFontFamilyAndName(guiDict.get("String_Node_Str").getAsString(),guiDict.get("String_Node_Str").getAsString());
        if (guiDict.get("String_Node_Str") != null)         ((MMPLabel)control).setAndroidFontFileName(guiDict.get("String_Node_Str").getAsString());
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPXYSlider(newFrame);
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPGrid(newFrame);
        if (guiDict.get("String_Node_Str") != null) {
          JsonArray dim=guiDict.get("String_Node_Str").getAsJsonArray();
          ((MMPGrid)control).setDimX(dim.get(0).getAsInt());
          ((MMPGrid)control).setDimY(dim.get(1).getAsInt());
        }
        if (guiDict.get("String_Node_Str") != null)         ((MMPGrid)control).setBorderThickness(guiDict.get("String_Node_Str").getAsInt());
        if (guiDict.get("String_Node_Str") != null)         ((MMPGrid)control).setCellPadding(guiDict.get("String_Node_Str").getAsInt());
        if (guiDict.get("String_Node_Str") != null) {
          ((MMPGrid)control).setMode(guiDict.get("String_Node_Str").getAsInt());
        }
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPPanel(newFrame);
        if (guiDict.get("String_Node_Str") != null)         ((MMPPanel)control).setImagePath(guiDict.get("String_Node_Str").getAsString());
        if (guiDict.get("String_Node_Str") != null)         ((MMPPanel)control).shouldPassTouches=(guiDict.get("String_Node_Str").getAsBoolean());
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPMultiSlider(newFrame);
        if (guiDict.get("String_Node_Str") != null)         ((MMPMultiSlider)control).setRange(guiDict.get("String_Node_Str").getAsInt());
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPLCD(newFrame);
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPMultiTouch(newFrame);
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPMenu(newFrame);
        if (guiDict.get("String_Node_Str") != null)         ((MMPMenu)control).setTitleString(guiDict.get("String_Node_Str").getAsString());
      }
 else       if (classString.equals("String_Node_Str")) {
        control=new MMPTable(newFrame);
        if (guiDict.get("String_Node_Str") != null)         ((MMPTable)control).setMode(guiDict.get("String_Node_Str").getAsInt());
        if (guiDict.get("String_Node_Str") != null) {
          Color selectionColor=DocumentModel.colorFromRGBAArray(guiDict.get("String_Node_Str").getAsJsonArray());
          ((MMPTable)control).setSelectionColor(selectionColor);
        }
      }
 else {
        control=new MMPUnknown(newFrame);
        ((MMPUnknown)control).setBadName(classString);
        Type collectionType=new TypeToken<Map<String,Object>>(){
        }
.getType();
        ((MMPUnknown)control).badGUIDict=gson.fromJson(guiDict,collectionType);
      }
      control.setColor(color);
      control.setHighlightColor(highlightColor);
      if (guiDict.get("String_Node_Str") != null) {
        control.setAddress(guiDict.get("String_Node_Str").getAsString());
        model.controlArray.add(control);
      }
    }
  }
  return model;
}