Program: 88645
Project: 88645
Buggy source:
@SuppressWarnings("String_Node_Str") private void handleChangedProperty(Element sourceElement,String propertyName,Object newValue,Object oldValue){
  JSONObject elementOb=null;
  String elementID=null;
  ArrayList<String> moveKeywords=new ArrayList<String>();
  moveKeywords.add(PropertyNames.OWNING_ASSOCIATION);
  moveKeywords.add(PropertyNames.OWNING_CONSTRAINT);
  moveKeywords.add(PropertyNames.OWNING_ELEMENT);
  moveKeywords.add(PropertyNames.OWNING_EXPRESSION);
  moveKeywords.add(PropertyNames.OWNING_INSTANCE);
  moveKeywords.add(PropertyNames.OWNING_INSTANCE_SPEC);
  moveKeywords.add(PropertyNames.OWNING_LOWER);
  moveKeywords.add(PropertyNames.OWNING_PACKAGE);
  moveKeywords.add(PropertyNames.OWNING_PARAMETER);
  moveKeywords.add(PropertyNames.OWNING_PROPERTY);
  moveKeywords.add(PropertyNames.OWNING_SIGNAL);
  moveKeywords.add(PropertyNames.OWNING_SLOT);
  moveKeywords.add(PropertyNames.OWNING_STATE);
  moveKeywords.add(PropertyNames.OWNING_TEMPLATE_PARAMETER);
  moveKeywords.add(PropertyNames.OWNING_TRANSITION);
  moveKeywords.add(PropertyNames.OWNING_UPPER);
  moveKeywords.add(PropertyNames._U_M_L_CLASS);
  moveKeywords.add(PropertyNames.OWNER);
  if (propertyName.equals(PropertyNames.NAME)) {
    elementID=ExportUtility.getElementID(sourceElement);
    if (elements.containsKey(elementID)) {
      elementOb=elements.get(elementID);
    }
 else {
      elementOb=new JSONObject();
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
    elementOb.put("String_Node_Str",newValue);
  }
 else   if (sourceElement instanceof Comment && ExportUtility.isElementDocumentation((Comment)sourceElement) && propertyName.equals(PropertyNames.BODY)) {
    Element actual=sourceElement.getOwner();
    if (elements.containsKey(ExportUtility.getElementID(actual))) {
      elementOb=elements.get(ExportUtility.getElementID(sourceElement));
    }
 else {
      elementOb=new JSONObject();
      elementOb.put("String_Node_Str",ExportUtility.getElementID(actual));
      elements.put(ExportUtility.getElementID(actual),elementOb);
    }
    elementOb.put("String_Node_Str",Utils.stripHtmlWrapper(ModelHelper.getComment(actual)));
  }
 else   if ((sourceElement instanceof ValueSpecification) && (propertyName.equals(PropertyNames.VALUE))) {
    Element actual=sourceElement.getOwner();
    while (actual instanceof ValueSpecification)     actual=actual.getOwner();
    if (actual != null)     elementID=ExportUtility.getElementID(actual);
 else     elementID=ExportUtility.getElementID(sourceElement);
    JSONObject specialization=new JSONObject();
    if (actual instanceof Property) {
      specialization.put("String_Node_Str","String_Node_Str");
      specialization.put("String_Node_Str",((Property)actual).isDerived());
      specialization.put("String_Node_Str",false);
      ValueSpecification vs=((Property)actual).getDefaultValue();
      JSONArray singleElementSpecVsArray=new JSONArray();
      if (vs != null) {
        JSONObject newElement=new JSONObject();
        ExportUtility.fillValueSpecification(vs,newElement,null,null);
        singleElementSpecVsArray.add(newElement);
      }
      specialization.put("String_Node_Str",singleElementSpecVsArray);
    }
 else     if (actual instanceof Slot) {
      specialization.put("String_Node_Str","String_Node_Str");
      if (((Slot)actual).getDefiningFeature().getID().equals("String_Node_Str"))       specialization.put("String_Node_Str",true);
      List<ValueSpecification> vsl=((Slot)actual).getValue();
      JSONArray specVsArray=new JSONArray();
      if (vsl != null && vsl.size() > 0) {
        for (        ValueSpecification vs : vsl) {
          JSONObject newElement=new JSONObject();
          ExportUtility.fillValueSpecification(vs,newElement,null,null);
          specVsArray.add(newElement);
        }
      }
      specialization.put("String_Node_Str",specVsArray);
    }
 else     return;
    if (elements.containsKey(elementID)) {
      elementOb=elements.get(elementID);
      elementOb.put("String_Node_Str",specialization);
    }
 else {
      elementOb=new JSONObject();
      elementOb.put("String_Node_Str",ExportUtility.getElementID(actual));
      elementOb.put("String_Node_Str",specialization);
      elements.put(ExportUtility.getElementID(actual),elementOb);
    }
  }
 else   if ((sourceElement instanceof Property) && propertyName.equals(PropertyNames.DEFAULT_VALUE)) {
    elementID=ExportUtility.getElementID(sourceElement);
    ValueSpecification vs=((Property)sourceElement).getDefaultValue();
    if (vs != null) {
      JSONObject jsonObj=new JSONObject();
      JSONArray value=new JSONArray();
      JSONObject specialization=new JSONObject();
      elementOb=new JSONObject();
      specialization.put("String_Node_Str",value);
      specialization.put("String_Node_Str","String_Node_Str");
      ExportUtility.fillValueSpecification(vs,jsonObj,null,null);
      value.add(jsonObj);
      elementOb.put("String_Node_Str",specialization);
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
  }
 else   if ((sourceElement instanceof Slot) && propertyName.equals(PropertyNames.VALUE)) {
    JSONObject specialization=new JSONObject();
    JSONArray value=new JSONArray();
    List<ValueSpecification> vsl=((Slot)sourceElement).getValue();
    elementOb=new JSONObject();
    elementID=ExportUtility.getElementID(sourceElement);
    if (vsl != null && vsl.size() > 0) {
      specialization.put("String_Node_Str",value);
      specialization.put("String_Node_Str","String_Node_Str");
      for (      ValueSpecification vs : vsl) {
        JSONObject jsonObj=new JSONObject();
        ExportUtility.fillValueSpecification(vs,jsonObj,null,null);
        value.add(jsonObj);
      }
      elementOb.put("String_Node_Str",specialization);
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
  }
 else   if (propertyName.equals(UML2MetamodelConstants.INSTANCE_CREATED) && ExportUtility.shouldAdd(sourceElement)) {
    elementID=ExportUtility.getElementID(sourceElement);
    if (elements.containsKey(elementID)) {
      elementOb=elements.get(elementID);
    }
 else {
      elementOb=new JSONObject();
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
    ExportUtility.fillElement(sourceElement,elementOb,null,null);
  }
 else   if (propertyName.equals(UML2MetamodelConstants.INSTANCE_DELETED)) {
    elementID=ExportUtility.getElementID(sourceElement);
    if (elements.containsKey(elementID))     elements.remove(elementID);
  }
 else   if (propertyName.equals(PropertyNames.SUPPLIER)) {
    if ((newValue != null) && (oldValue == null)) {
      JSONObject specialization=new JSONObject();
      elementID=ExportUtility.getElementID(sourceElement);
      if (elements.containsKey(elementID)) {
        elementOb=elements.get(elementID);
      }
 else {
        elementOb=new JSONObject();
        elementOb.put("String_Node_Str",elementID);
        elements.put(elementID,elementOb);
      }
      Element client=ModelHelper.getClientElement(sourceElement);
      Element supplier=ModelHelper.getSupplierElement(sourceElement);
      specialization.put("String_Node_Str",client.getID());
      specialization.put("String_Node_Str",supplier.getID());
      elementOb.put("String_Node_Str",specialization);
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
  }
 else   if (propertyName.equals(PropertyNames.CLIENT)) {
    if ((newValue != null) && (oldValue == null)) {
      JSONObject specialization=new JSONObject();
      elementID=ExportUtility.getElementID(sourceElement);
      if (elements.containsKey(elementID)) {
        elementOb=elements.get(elementID);
      }
 else {
        elementOb=new JSONObject();
        elementOb.put("String_Node_Str",elementID);
        elements.put(elementID,elementOb);
      }
      Element client=ModelHelper.getClientElement(sourceElement);
      Element supplier=ModelHelper.getSupplierElement(sourceElement);
      specialization.put("String_Node_Str",client.getID());
      specialization.put("String_Node_Str",supplier.getID());
      elementOb.put("String_Node_Str",specialization);
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
  }
 else   if ((sourceElement instanceof Generalization) && ((propertyName.equals(PropertyNames.SPECIFIC)) || (propertyName.equals(PropertyNames.GENERAL)))) {
    if ((newValue != null) && (oldValue == null)) {
      JSONObject specialization=new JSONObject();
      elementID=ExportUtility.getElementID(sourceElement);
      if (elements.containsKey(elementID)) {
        elementOb=elements.get(elementID);
      }
 else {
        elementOb=new JSONObject();
        elementOb.put("String_Node_Str",elementID);
        elements.put(elementID,elementOb);
      }
      boolean isConform=StereotypesHelper.hasStereotypeOrDerived(sourceElement,DocGen3Profile.conformStereotype);
      if (isConform)       specialization.put("String_Node_Str","String_Node_Str");
 else       if (StereotypesHelper.hasStereotypeOrDerived(sourceElement,DocGen3Profile.queriesStereotype))       specialization.put("String_Node_Str","String_Node_Str");
 else       specialization.put("String_Node_Str","String_Node_Str");
      Element client=ModelHelper.getClientElement(sourceElement);
      Element supplier=ModelHelper.getSupplierElement(sourceElement);
      specialization.put("String_Node_Str",client.getID());
      specialization.put("String_Node_Str",supplier.getID());
      elementOb.put("String_Node_Str",specialization);
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
  }
 else   if ((moveKeywords.contains(propertyName)) && ExportUtility.shouldAdd(sourceElement)) {
    if (elements.containsKey(elementID)) {
      elementOb=elements.get(elementID);
    }
 else {
      elementOb=new JSONObject();
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
    elementID=ExportUtility.getElementID(sourceElement);
    elementOb.put("String_Node_Str",elementID);
    if (sourceElement.getOwner() == null)     elementOb.put("String_Node_Str","String_Node_Str");
 else     if (sourceElement.getOwner() == Application.getInstance().getProject().getModel())     elementOb.put("String_Node_Str",Application.getInstance().getProject().getPrimaryProject().getProjectID());
 else     elementOb.put("String_Node_Str","String_Node_Str" + sourceElement.getOwner().getID());
  }
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") private void handleChangedProperty(Element sourceElement,String propertyName,Object newValue,Object oldValue){
  JSONObject elementOb=null;
  String elementID=null;
  ArrayList<String> moveKeywords=new ArrayList<String>();
  moveKeywords.add(PropertyNames.OWNING_ASSOCIATION);
  moveKeywords.add(PropertyNames.OWNING_CONSTRAINT);
  moveKeywords.add(PropertyNames.OWNING_ELEMENT);
  moveKeywords.add(PropertyNames.OWNING_EXPRESSION);
  moveKeywords.add(PropertyNames.OWNING_INSTANCE);
  moveKeywords.add(PropertyNames.OWNING_INSTANCE_SPEC);
  moveKeywords.add(PropertyNames.OWNING_LOWER);
  moveKeywords.add(PropertyNames.OWNING_PACKAGE);
  moveKeywords.add(PropertyNames.OWNING_PARAMETER);
  moveKeywords.add(PropertyNames.OWNING_PROPERTY);
  moveKeywords.add(PropertyNames.OWNING_SIGNAL);
  moveKeywords.add(PropertyNames.OWNING_SLOT);
  moveKeywords.add(PropertyNames.OWNING_STATE);
  moveKeywords.add(PropertyNames.OWNING_TEMPLATE_PARAMETER);
  moveKeywords.add(PropertyNames.OWNING_TRANSITION);
  moveKeywords.add(PropertyNames.OWNING_UPPER);
  moveKeywords.add(PropertyNames._U_M_L_CLASS);
  moveKeywords.add(PropertyNames.OWNER);
  if (propertyName.equals(PropertyNames.NAME)) {
    elementID=ExportUtility.getElementID(sourceElement);
    if (elements.containsKey(elementID)) {
      elementOb=elements.get(elementID);
    }
 else {
      elementOb=new JSONObject();
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
    elementOb.put("String_Node_Str",newValue);
  }
 else   if (sourceElement instanceof Comment && ExportUtility.isElementDocumentation((Comment)sourceElement) && propertyName.equals(PropertyNames.BODY)) {
    Element actual=sourceElement.getOwner();
    if (elements.containsKey(ExportUtility.getElementID(actual))) {
      elementOb=elements.get(ExportUtility.getElementID(actual));
    }
 else {
      elementOb=new JSONObject();
      elementOb.put("String_Node_Str",ExportUtility.getElementID(actual));
      elements.put(ExportUtility.getElementID(actual),elementOb);
    }
    elementOb.put("String_Node_Str",Utils.stripHtmlWrapper(ModelHelper.getComment(actual)));
  }
 else   if ((sourceElement instanceof ValueSpecification) && (propertyName.equals(PropertyNames.VALUE))) {
    Element actual=sourceElement.getOwner();
    while (actual instanceof ValueSpecification)     actual=actual.getOwner();
    if (actual != null)     elementID=ExportUtility.getElementID(actual);
 else     elementID=ExportUtility.getElementID(sourceElement);
    JSONObject specialization=new JSONObject();
    if (actual instanceof Property) {
      specialization.put("String_Node_Str","String_Node_Str");
      specialization.put("String_Node_Str",((Property)actual).isDerived());
      specialization.put("String_Node_Str",false);
      ValueSpecification vs=((Property)actual).getDefaultValue();
      JSONArray singleElementSpecVsArray=new JSONArray();
      if (vs != null) {
        JSONObject newElement=new JSONObject();
        ExportUtility.fillValueSpecification(vs,newElement,null,null);
        singleElementSpecVsArray.add(newElement);
      }
      specialization.put("String_Node_Str",singleElementSpecVsArray);
    }
 else     if (actual instanceof Slot) {
      specialization.put("String_Node_Str","String_Node_Str");
      if (((Slot)actual).getDefiningFeature().getID().equals("String_Node_Str"))       specialization.put("String_Node_Str",true);
      List<ValueSpecification> vsl=((Slot)actual).getValue();
      JSONArray specVsArray=new JSONArray();
      if (vsl != null && vsl.size() > 0) {
        for (        ValueSpecification vs : vsl) {
          JSONObject newElement=new JSONObject();
          ExportUtility.fillValueSpecification(vs,newElement,null,null);
          specVsArray.add(newElement);
        }
      }
      specialization.put("String_Node_Str",specVsArray);
    }
 else     return;
    if (elements.containsKey(elementID)) {
      elementOb=elements.get(elementID);
      elementOb.put("String_Node_Str",specialization);
    }
 else {
      elementOb=new JSONObject();
      elementOb.put("String_Node_Str",ExportUtility.getElementID(actual));
      elementOb.put("String_Node_Str",specialization);
      elements.put(ExportUtility.getElementID(actual),elementOb);
    }
  }
 else   if ((sourceElement instanceof Property) && propertyName.equals(PropertyNames.DEFAULT_VALUE)) {
    elementID=ExportUtility.getElementID(sourceElement);
    ValueSpecification vs=((Property)sourceElement).getDefaultValue();
    if (vs != null) {
      JSONObject jsonObj=new JSONObject();
      JSONArray value=new JSONArray();
      JSONObject specialization=new JSONObject();
      elementOb=new JSONObject();
      specialization.put("String_Node_Str",value);
      specialization.put("String_Node_Str","String_Node_Str");
      ExportUtility.fillValueSpecification(vs,jsonObj,null,null);
      value.add(jsonObj);
      elementOb.put("String_Node_Str",specialization);
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
  }
 else   if ((sourceElement instanceof Slot) && propertyName.equals(PropertyNames.VALUE)) {
    JSONObject specialization=new JSONObject();
    JSONArray value=new JSONArray();
    List<ValueSpecification> vsl=((Slot)sourceElement).getValue();
    elementOb=new JSONObject();
    elementID=ExportUtility.getElementID(sourceElement);
    if (vsl != null && vsl.size() > 0) {
      specialization.put("String_Node_Str",value);
      specialization.put("String_Node_Str","String_Node_Str");
      for (      ValueSpecification vs : vsl) {
        JSONObject jsonObj=new JSONObject();
        ExportUtility.fillValueSpecification(vs,jsonObj,null,null);
        value.add(jsonObj);
      }
      elementOb.put("String_Node_Str",specialization);
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
  }
 else   if (propertyName.equals(UML2MetamodelConstants.INSTANCE_CREATED) && ExportUtility.shouldAdd(sourceElement)) {
    elementID=ExportUtility.getElementID(sourceElement);
    if (elements.containsKey(elementID)) {
      elementOb=elements.get(elementID);
    }
 else {
      elementOb=new JSONObject();
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
    ExportUtility.fillElement(sourceElement,elementOb,null,null);
  }
 else   if (propertyName.equals(UML2MetamodelConstants.INSTANCE_DELETED)) {
    elementID=ExportUtility.getElementID(sourceElement);
    if (elements.containsKey(elementID))     elements.remove(elementID);
  }
 else   if (propertyName.equals(PropertyNames.SUPPLIER)) {
    if ((newValue != null) && (oldValue == null)) {
      JSONObject specialization=new JSONObject();
      elementID=ExportUtility.getElementID(sourceElement);
      if (elements.containsKey(elementID)) {
        elementOb=elements.get(elementID);
      }
 else {
        elementOb=new JSONObject();
        elementOb.put("String_Node_Str",elementID);
        elements.put(elementID,elementOb);
      }
      Element client=ModelHelper.getClientElement(sourceElement);
      Element supplier=ModelHelper.getSupplierElement(sourceElement);
      specialization.put("String_Node_Str",client.getID());
      specialization.put("String_Node_Str",supplier.getID());
      elementOb.put("String_Node_Str",specialization);
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
  }
 else   if (propertyName.equals(PropertyNames.CLIENT)) {
    if ((newValue != null) && (oldValue == null)) {
      JSONObject specialization=new JSONObject();
      elementID=ExportUtility.getElementID(sourceElement);
      if (elements.containsKey(elementID)) {
        elementOb=elements.get(elementID);
      }
 else {
        elementOb=new JSONObject();
        elementOb.put("String_Node_Str",elementID);
        elements.put(elementID,elementOb);
      }
      Element client=ModelHelper.getClientElement(sourceElement);
      Element supplier=ModelHelper.getSupplierElement(sourceElement);
      specialization.put("String_Node_Str",client.getID());
      specialization.put("String_Node_Str",supplier.getID());
      elementOb.put("String_Node_Str",specialization);
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
  }
 else   if ((sourceElement instanceof Generalization) && ((propertyName.equals(PropertyNames.SPECIFIC)) || (propertyName.equals(PropertyNames.GENERAL)))) {
    if ((newValue != null) && (oldValue == null)) {
      JSONObject specialization=new JSONObject();
      elementID=ExportUtility.getElementID(sourceElement);
      if (elements.containsKey(elementID)) {
        elementOb=elements.get(elementID);
      }
 else {
        elementOb=new JSONObject();
        elementOb.put("String_Node_Str",elementID);
        elements.put(elementID,elementOb);
      }
      boolean isConform=StereotypesHelper.hasStereotypeOrDerived(sourceElement,DocGen3Profile.conformStereotype);
      if (isConform)       specialization.put("String_Node_Str","String_Node_Str");
 else       if (StereotypesHelper.hasStereotypeOrDerived(sourceElement,DocGen3Profile.queriesStereotype))       specialization.put("String_Node_Str","String_Node_Str");
 else       specialization.put("String_Node_Str","String_Node_Str");
      Element client=ModelHelper.getClientElement(sourceElement);
      Element supplier=ModelHelper.getSupplierElement(sourceElement);
      specialization.put("String_Node_Str",client.getID());
      specialization.put("String_Node_Str",supplier.getID());
      elementOb.put("String_Node_Str",specialization);
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
  }
 else   if ((moveKeywords.contains(propertyName)) && ExportUtility.shouldAdd(sourceElement)) {
    if (elements.containsKey(elementID)) {
      elementOb=elements.get(elementID);
    }
 else {
      elementOb=new JSONObject();
      elementOb.put("String_Node_Str",elementID);
      elements.put(elementID,elementOb);
    }
    elementID=ExportUtility.getElementID(sourceElement);
    elementOb.put("String_Node_Str",elementID);
    if (sourceElement.getOwner() == null)     elementOb.put("String_Node_Str","String_Node_Str");
 else     if (sourceElement.getOwner() == Application.getInstance().getProject().getModel())     elementOb.put("String_Node_Str",Application.getInstance().getProject().getPrimaryProject().getProjectID());
 else     elementOb.put("String_Node_Str","String_Node_Str" + sourceElement.getOwner().getID());
  }
}