message: dawn_wire: Only generate has_member for optional members
  We were generating has_member for all pointer members which meant
  it was possible to incorrectly pass nullptr for required arguments.
diff: size_t {{as_varName(member.name)}}Strlen;
  {% endfor %}
  - {% for member in members if member.annotation != "value" and member.type.category != "object" %}
  + {% for member in members if member.optional and member.annotation != "value" and member.type.category != "object" %}
  bool has_{{as_varName(member.name)}};
  {% endfor %}
  };
  {% for member in members if member.length == "strlen" %}
  {% set memberName = as_varName(member.name) %}
  + {% if member.optional %}
  bool has_{{memberName}} = record.{{memberName}} != nullptr;
  transfer->has_{{memberName}} = has_{{memberName}};
  - {% if member.optional %}
  if (has_{{memberName}})
  {% endif %}
  {
  {% for member in members if member.length == "strlen" %}
  {% set memberName = as_varName(member.name) %}
  - bool has_{{memberName}} = transfer->has_{{memberName}};
  - if (has_{{memberName}})
  + record->{{memberName}} = nullptr;
  + {% if member.optional %}
  + if (transfer->has_{{memberName}})
  + {% endif %}
  {
  size_t stringLength = transfer->{{memberName}}Strlen;
  const char* stringInBuffer = nullptr;
  memcpy(copiedString, stringInBuffer, stringLength);
  copiedString[stringLength] = '\0';
  record->{{memberName}} = copiedString;
  - } else {
  - record->{{memberName}} = nullptr;
  }
  {% endfor %}
  