Program: 23063
Project: 23063
Buggy source:
protected void parseDataRequirementProperties(JsonObject json,DataRequirement res) throws IOException, FHIRFormatError {
  parseTypeProperties(json,res);
  if (json.has("String_Node_Str"))   res.setTypeElement(parseCode(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getTypeElement());
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getProfile().add(parseCanonical(array.get(i).getAsString()));
    }
  }
  ;
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      if (i == res.getProfile().size())       res.getProfile().add(parseCanonical(null));
      if (array.get(i) instanceof JsonObject)       parseElementProperties(array.get(i).getAsJsonObject(),res.getProfile().get(i));
    }
  }
  ;
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getMustSupport().add(parseString(array.get(i).getAsString()));
    }
  }
  ;
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      if (i == res.getMustSupport().size())       res.getMustSupport().add(parseString(null));
      if (array.get(i) instanceof JsonObject)       parseElementProperties(array.get(i).getAsJsonObject(),res.getMustSupport().get(i));
    }
  }
  ;
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getCodeFilter().add(parseDataRequirementDataRequirementCodeFilterComponent(array.get(i).getAsJsonObject(),res));
    }
  }
  ;
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getDateFilter().add(parseDataRequirementDataRequirementDateFilterComponent(array.get(i).getAsJsonObject(),res));
    }
  }
  ;
}

Fixed version (ground truth):
protected void parseDataRequirementProperties(JsonObject json,DataRequirement res) throws IOException, FHIRFormatError {
  parseTypeProperties(json,res);
  if (json.has("String_Node_Str"))   res.setTypeElement(parseCode(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getTypeElement());
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getProfile().add(parseCanonical(array.get(i).getAsString()));
    }
  }
  ;
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      if (i == res.getProfile().size())       res.getProfile().add(parseCanonical(null));
      if (array.get(i) instanceof JsonObject)       parseElementProperties(array.get(i).getAsJsonObject(),res.getProfile().get(i));
    }
  }
  ;
  Type subject=parseType("String_Node_Str",json);
  if (subject != null)   res.setSubject(subject);
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getMustSupport().add(parseString(array.get(i).getAsString()));
    }
  }
  ;
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      if (i == res.getMustSupport().size())       res.getMustSupport().add(parseString(null));
      if (array.get(i) instanceof JsonObject)       parseElementProperties(array.get(i).getAsJsonObject(),res.getMustSupport().get(i));
    }
  }
  ;
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getCodeFilter().add(parseDataRequirementDataRequirementCodeFilterComponent(array.get(i).getAsJsonObject(),res));
    }
  }
  ;
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getDateFilter().add(parseDataRequirementDataRequirementDateFilterComponent(array.get(i).getAsJsonObject(),res));
    }
  }
  ;
  if (json.has("String_Node_Str"))   res.setLimitElement(parsePositiveInt(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getLimitElement());
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getSort().add(parseDataRequirementDataRequirementSortComponent(array.get(i).getAsJsonObject(),res));
    }
  }
  ;
}