Program: 23986
Project: 23986
Buggy source:
protected void parseActivityDefinitionProperties(JsonObject json,ActivityDefinition res) throws IOException, FHIRFormatError {
  parseDomainResourceProperties(json,res);
  if (json.has("String_Node_Str"))   res.setModuleMetadata(parseModuleMetadata(json.getAsJsonObject("String_Node_Str")));
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getLibrary().add(parseReference(array.get(i).getAsJsonObject()));
    }
  }
  ;
  if (json.has("String_Node_Str"))   res.setCategoryElement(parseEnumeration(json.get("String_Node_Str").getAsString(),ActivityDefinition.ActivityDefinitionCategory.NULL,new ActivityDefinition.ActivityDefinitionCategoryEnumFactory()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getCategoryElement());
  if (json.has("String_Node_Str"))   res.setCode(parseCodeableConcept(json.getAsJsonObject("String_Node_Str")));
  Type timing=parseType("String_Node_Str",json);
  if (timing != null)   res.setTiming(timing);
  if (json.has("String_Node_Str"))   res.setLocation(parseReference(json.getAsJsonObject("String_Node_Str")));
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getParticipantType().add(parseEnumeration(array.get(i).getAsString(),ActivityDefinition.ActivityParticipantType.NULL,new ActivityDefinition.ActivityParticipantTypeEnumFactory()));
    }
  }
  ;
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      if (i == res.getParticipantType().size())       res.getParticipantType().add(parseEnumeration(null,ActivityDefinition.ActivityParticipantType.NULL,new ActivityDefinition.ActivityParticipantTypeEnumFactory()));
      if (array.get(i) instanceof JsonObject)       parseElementProperties(array.get(i).getAsJsonObject(),res.getParticipantType().get(i));
    }
  }
  ;
  Type product=parseType("String_Node_Str",json);
  if (product != null)   res.setProduct(product);
  if (json.has("String_Node_Str"))   res.setQuantity(parseSimpleQuantity(json.getAsJsonObject("String_Node_Str")));
  if (json.has("String_Node_Str"))   res.setDescriptionElement(parseString(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getDescriptionElement());
}

Fixed version (ground truth):
protected void parseActivityDefinitionProperties(JsonObject json,ActivityDefinition res) throws IOException, FHIRFormatError {
  parseDomainResourceProperties(json,res);
  if (json.has("String_Node_Str"))   res.setUrlElement(parseUri(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getUrlElement());
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getIdentifier().add(parseIdentifier(array.get(i).getAsJsonObject()));
    }
  }
  ;
  if (json.has("String_Node_Str"))   res.setVersionElement(parseString(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getVersionElement());
  if (json.has("String_Node_Str"))   res.setNameElement(parseString(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getNameElement());
  if (json.has("String_Node_Str"))   res.setTitleElement(parseString(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getTitleElement());
  if (json.has("String_Node_Str"))   res.setStatusElement(parseCode(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getStatusElement());
  if (json.has("String_Node_Str"))   res.setExperimentalElement(parseBoolean(json.get("String_Node_Str").getAsBoolean()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getExperimentalElement());
  if (json.has("String_Node_Str"))   res.setDescriptionElement(parseString(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getDescriptionElement());
  if (json.has("String_Node_Str"))   res.setPurposeElement(parseString(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getPurposeElement());
  if (json.has("String_Node_Str"))   res.setUsageElement(parseString(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getUsageElement());
  if (json.has("String_Node_Str"))   res.setPublicationDateElement(parseDate(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getPublicationDateElement());
  if (json.has("String_Node_Str"))   res.setLastReviewDateElement(parseDate(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getLastReviewDateElement());
  if (json.has("String_Node_Str"))   res.setEffectivePeriod(parsePeriod(json.getAsJsonObject("String_Node_Str")));
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getCoverage().add(parseUsageContext(array.get(i).getAsJsonObject()));
    }
  }
  ;
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getTopic().add(parseCodeableConcept(array.get(i).getAsJsonObject()));
    }
  }
  ;
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getContributor().add(parseContributor(array.get(i).getAsJsonObject()));
    }
  }
  ;
  if (json.has("String_Node_Str"))   res.setPublisherElement(parseString(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getPublisherElement());
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getContact().add(parseContactDetail(array.get(i).getAsJsonObject()));
    }
  }
  ;
  if (json.has("String_Node_Str"))   res.setCopyrightElement(parseString(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getCopyrightElement());
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getRelatedResource().add(parseRelatedResource(array.get(i).getAsJsonObject()));
    }
  }
  ;
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getLibrary().add(parseReference(array.get(i).getAsJsonObject()));
    }
  }
  ;
  if (json.has("String_Node_Str"))   res.setCategoryElement(parseEnumeration(json.get("String_Node_Str").getAsString(),ActivityDefinition.ActivityDefinitionCategory.NULL,new ActivityDefinition.ActivityDefinitionCategoryEnumFactory()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getCategoryElement());
  if (json.has("String_Node_Str"))   res.setCode(parseCodeableConcept(json.getAsJsonObject("String_Node_Str")));
  Type timing=parseType("String_Node_Str",json);
  if (timing != null)   res.setTiming(timing);
  if (json.has("String_Node_Str"))   res.setLocation(parseReference(json.getAsJsonObject("String_Node_Str")));
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getParticipantType().add(parseEnumeration(array.get(i).getAsString(),ActivityDefinition.ActivityParticipantType.NULL,new ActivityDefinition.ActivityParticipantTypeEnumFactory()));
    }
  }
  ;
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      if (i == res.getParticipantType().size())       res.getParticipantType().add(parseEnumeration(null,ActivityDefinition.ActivityParticipantType.NULL,new ActivityDefinition.ActivityParticipantTypeEnumFactory()));
      if (array.get(i) instanceof JsonObject)       parseElementProperties(array.get(i).getAsJsonObject(),res.getParticipantType().get(i));
    }
  }
  ;
  Type product=parseType("String_Node_Str",json);
  if (product != null)   res.setProduct(product);
  if (json.has("String_Node_Str"))   res.setQuantity(parseSimpleQuantity(json.getAsJsonObject("String_Node_Str")));
}