Program: 24004
Project: 24004
Buggy source:
protected void parseEndpointProperties(JsonObject json,Endpoint res) throws IOException, FHIRFormatError {
  parseDomainResourceProperties(json,res);
  if (json.has("String_Node_Str"))   res.setStatusElement(parseEnumeration(json.get("String_Node_Str").getAsString(),Endpoint.EndpointStatus.NULL,new Endpoint.EndpointStatusEnumFactory()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getStatusElement());
  if (json.has("String_Node_Str"))   res.setManagingOrganization(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.getContact().add(parseContactPoint(array.get(i).getAsJsonObject()));
    }
  }
  ;
  if (json.has("String_Node_Str"))   res.setConnectionTypeElement(parseCode(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getConnectionTypeElement());
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getMethod().add(parseCoding(array.get(i).getAsJsonObject()));
    }
  }
  ;
  if (json.has("String_Node_Str"))   res.setPeriod(parsePeriod(json.getAsJsonObject("String_Node_Str")));
  Type address=parseType("String_Node_Str",json);
  if (address != null)   res.setAddress(address);
  if (json.has("String_Node_Str"))   res.setPayloadFormatElement(parseString(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getPayloadFormatElement());
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getPayloadType().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.getHeader().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.getHeader().size())       res.getHeader().add(parseString(null));
      if (array.get(i) instanceof JsonObject)       parseElementProperties(array.get(i).getAsJsonObject(),res.getHeader().get(i));
    }
  }
  ;
  if (json.has("String_Node_Str"))   res.setPublicKeyElement(parseString(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getPublicKeyElement());
}

Fixed version (ground truth):
protected void parseEndpointProperties(JsonObject json,Endpoint res) throws IOException, FHIRFormatError {
  parseDomainResourceProperties(json,res);
  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.setStatusElement(parseEnumeration(json.get("String_Node_Str").getAsString(),Endpoint.EndpointStatus.NULL,new Endpoint.EndpointStatusEnumFactory()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getStatusElement());
  if (json.has("String_Node_Str"))   res.setManagingOrganization(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.getContact().add(parseContactPoint(array.get(i).getAsJsonObject()));
    }
  }
  ;
  if (json.has("String_Node_Str"))   res.setConnectionTypeElement(parseCode(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getConnectionTypeElement());
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getMethod().add(parseCoding(array.get(i).getAsJsonObject()));
    }
  }
  ;
  if (json.has("String_Node_Str"))   res.setPeriod(parsePeriod(json.getAsJsonObject("String_Node_Str")));
  Type address=parseType("String_Node_Str",json);
  if (address != null)   res.setAddress(address);
  if (json.has("String_Node_Str"))   res.setPayloadFormatElement(parseString(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getPayloadFormatElement());
  if (json.has("String_Node_Str")) {
    JsonArray array=json.getAsJsonArray("String_Node_Str");
    for (int i=0; i < array.size(); i++) {
      res.getPayloadType().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.getHeader().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.getHeader().size())       res.getHeader().add(parseString(null));
      if (array.get(i) instanceof JsonObject)       parseElementProperties(array.get(i).getAsJsonObject(),res.getHeader().get(i));
    }
  }
  ;
  if (json.has("String_Node_Str"))   res.setPublicKeyElement(parseString(json.get("String_Node_Str").getAsString()));
  if (json.has("String_Node_Str"))   parseElementProperties(json.getAsJsonObject("String_Node_Str"),res.getPublicKeyElement());
}