Type makeStructALike() {
  Type structALike;
  structALike.fieldD_ref() = {"first", "second"};
  structALike.fieldE_ref() = {{"first", 1}, {"second", 2}};
  structALike.fieldA_ref() = "yo";
  structALike.fieldB_ref() = 123;
  structALike.fieldF_ref() = UNQUALIFIED;
  structALike.fieldC_ref().emplace();
  structALike.fieldC_ref() = makeStructBLike<
      std::remove_reference_t<decltype(*structALike.fieldC_ref())>>();
  using EnumType = std::remove_reference_t<decltype(*structALike.fieldG_ref())>;
  structALike.fieldG_ref() = EnumType::A;
  return structALike;
}
Type makeStructALike() {
  Type structALike;
  structALike.fieldD_ref() = {"first", "second"};
  structALike.fieldE_ref() = {{"first", 1}, {"second", 2}};
  structALike.fieldA_ref() = "yo";
  structALike.fieldB_ref() = 123;
  structALike.fieldF_ref() = UNQUALIFIED;
  structALike.fieldC_ref().emplace();
  structALike.fieldC_ref() = makeStructBLike<
      std::remove_reference_t<decltype(*structALike.fieldC_ref())>>();
  using EnumType = std::remove_reference_t<decltype(*structALike.fieldG_ref())>;
  structALike.fieldG_ref() = EnumType::A;
  return structALike;
}