Program: 23984
Project: 23984
Buggy source:
protected void parsePlanDefinitionProperties(JsonObject json,PlanDefinition 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")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getActionDefinition().add(parsePlanDefinitionPlanDefinitionActionDefinitionComponent(array.get(i).getAsJsonObject(),res));
    }
  }
  ;
}

Fixed version (ground truth):
protected void parsePlanDefinitionProperties(JsonObject json,PlanDefinition 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")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getActionDefinition().add(parsePlanDefinitionPlanDefinitionActionDefinitionComponent(array.get(i).getAsJsonObject(),res));
    }
  }
  ;
}