schema_org_types/schemas/classes/
merchant_return_policy.rs

1use super::*;
2/// <https://schema.org/MerchantReturnPolicy>
3#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct MerchantReturnPolicy {
6	/// <https://schema.org/additionalProperty>
7	pub r#additional_property: Vec<AdditionalPropertyProperty>,
8	/// <https://schema.org/applicableCountry>
9	pub r#applicable_country: Vec<ApplicableCountryProperty>,
10	/// <https://schema.org/customerRemorseReturnFees>
11	pub r#customer_remorse_return_fees: Vec<CustomerRemorseReturnFeesProperty>,
12	/// <https://schema.org/customerRemorseReturnLabelSource>
13	pub r#customer_remorse_return_label_source: Vec<CustomerRemorseReturnLabelSourceProperty>,
14	/// <https://schema.org/customerRemorseReturnShippingFeesAmount>
15	pub r#customer_remorse_return_shipping_fees_amount:
16		Vec<CustomerRemorseReturnShippingFeesAmountProperty>,
17	/// <https://schema.org/inStoreReturnsOffered>
18	pub r#in_store_returns_offered: Vec<InStoreReturnsOfferedProperty>,
19	/// <https://schema.org/itemCondition>
20	pub r#item_condition: Vec<ItemConditionProperty>,
21	/// <https://schema.org/itemDefectReturnFees>
22	pub r#item_defect_return_fees: Vec<ItemDefectReturnFeesProperty>,
23	/// <https://schema.org/itemDefectReturnLabelSource>
24	pub r#item_defect_return_label_source: Vec<ItemDefectReturnLabelSourceProperty>,
25	/// <https://schema.org/itemDefectReturnShippingFeesAmount>
26	pub r#item_defect_return_shipping_fees_amount: Vec<ItemDefectReturnShippingFeesAmountProperty>,
27	/// <https://schema.org/merchantReturnDays>
28	pub r#merchant_return_days: Vec<MerchantReturnDaysProperty>,
29	/// <https://schema.org/merchantReturnLink>
30	pub r#merchant_return_link: Vec<MerchantReturnLinkProperty>,
31	/// <https://schema.org/refundType>
32	pub r#refund_type: Vec<RefundTypeProperty>,
33	/// <https://schema.org/restockingFee>
34	pub r#restocking_fee: Vec<RestockingFeeProperty>,
35	/// <https://schema.org/returnFees>
36	pub r#return_fees: Vec<ReturnFeesProperty>,
37	/// <https://schema.org/returnLabelSource>
38	pub r#return_label_source: Vec<ReturnLabelSourceProperty>,
39	/// <https://schema.org/returnMethod>
40	pub r#return_method: Vec<ReturnMethodProperty>,
41	/// <https://schema.org/returnPolicyCategory>
42	pub r#return_policy_category: Vec<ReturnPolicyCategoryProperty>,
43	/// <https://schema.org/returnPolicyCountry>
44	pub r#return_policy_country: Vec<ReturnPolicyCountryProperty>,
45	/// <https://schema.org/returnPolicySeasonalOverride>
46	pub r#return_policy_seasonal_override: Vec<ReturnPolicySeasonalOverrideProperty>,
47	/// <https://schema.org/returnShippingFeesAmount>
48	pub r#return_shipping_fees_amount: Vec<ReturnShippingFeesAmountProperty>,
49	/// <https://schema.org/additionalType>
50	pub r#additional_type: Vec<AdditionalTypeProperty>,
51	/// <https://schema.org/alternateName>
52	pub r#alternate_name: Vec<AlternateNameProperty>,
53	/// <https://schema.org/description>
54	pub r#description: Vec<DescriptionProperty>,
55	/// <https://schema.org/disambiguatingDescription>
56	pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
57	/// <https://schema.org/identifier>
58	pub r#identifier: Vec<IdentifierProperty>,
59	/// <https://schema.org/image>
60	pub r#image: Vec<ImageProperty>,
61	/// <https://schema.org/mainEntityOfPage>
62	pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
63	/// <https://schema.org/name>
64	pub r#name: Vec<NameProperty>,
65	/// <https://schema.org/potentialAction>
66	pub r#potential_action: Vec<PotentialActionProperty>,
67	/// <https://schema.org/sameAs>
68	pub r#same_as: Vec<SameAsProperty>,
69	/// <https://schema.org/subjectOf>
70	pub r#subject_of: Vec<SubjectOfProperty>,
71	/// <https://schema.org/url>
72	pub r#url: Vec<UrlProperty>,
73}
74/// This trait is for properties from <https://schema.org/MerchantReturnPolicy>.
75pub trait MerchantReturnPolicyTrait {
76	/// Get <https://schema.org/additionalProperty> from [`Self`] as borrowed slice.
77	fn get_additional_property(&self) -> &[AdditionalPropertyProperty];
78	/// Take <https://schema.org/additionalProperty> from [`Self`] as owned vector.
79	fn take_additional_property(&mut self) -> Vec<AdditionalPropertyProperty>;
80	/// Get <https://schema.org/applicableCountry> from [`Self`] as borrowed slice.
81	fn get_applicable_country(&self) -> &[ApplicableCountryProperty];
82	/// Take <https://schema.org/applicableCountry> from [`Self`] as owned vector.
83	fn take_applicable_country(&mut self) -> Vec<ApplicableCountryProperty>;
84	/// Get <https://schema.org/customerRemorseReturnFees> from [`Self`] as borrowed slice.
85	fn get_customer_remorse_return_fees(&self) -> &[CustomerRemorseReturnFeesProperty];
86	/// Take <https://schema.org/customerRemorseReturnFees> from [`Self`] as owned vector.
87	fn take_customer_remorse_return_fees(&mut self) -> Vec<CustomerRemorseReturnFeesProperty>;
88	/// Get <https://schema.org/customerRemorseReturnLabelSource> from [`Self`] as borrowed slice.
89	fn get_customer_remorse_return_label_source(
90		&self,
91	) -> &[CustomerRemorseReturnLabelSourceProperty];
92	/// Take <https://schema.org/customerRemorseReturnLabelSource> from [`Self`] as owned vector.
93	fn take_customer_remorse_return_label_source(
94		&mut self,
95	) -> Vec<CustomerRemorseReturnLabelSourceProperty>;
96	/// Get <https://schema.org/customerRemorseReturnShippingFeesAmount> from [`Self`] as borrowed slice.
97	fn get_customer_remorse_return_shipping_fees_amount(
98		&self,
99	) -> &[CustomerRemorseReturnShippingFeesAmountProperty];
100	/// Take <https://schema.org/customerRemorseReturnShippingFeesAmount> from [`Self`] as owned vector.
101	fn take_customer_remorse_return_shipping_fees_amount(
102		&mut self,
103	) -> Vec<CustomerRemorseReturnShippingFeesAmountProperty>;
104	/// Get <https://schema.org/inStoreReturnsOffered> from [`Self`] as borrowed slice.
105	fn get_in_store_returns_offered(&self) -> &[InStoreReturnsOfferedProperty];
106	/// Take <https://schema.org/inStoreReturnsOffered> from [`Self`] as owned vector.
107	fn take_in_store_returns_offered(&mut self) -> Vec<InStoreReturnsOfferedProperty>;
108	/// Get <https://schema.org/itemCondition> from [`Self`] as borrowed slice.
109	fn get_item_condition(&self) -> &[ItemConditionProperty];
110	/// Take <https://schema.org/itemCondition> from [`Self`] as owned vector.
111	fn take_item_condition(&mut self) -> Vec<ItemConditionProperty>;
112	/// Get <https://schema.org/itemDefectReturnFees> from [`Self`] as borrowed slice.
113	fn get_item_defect_return_fees(&self) -> &[ItemDefectReturnFeesProperty];
114	/// Take <https://schema.org/itemDefectReturnFees> from [`Self`] as owned vector.
115	fn take_item_defect_return_fees(&mut self) -> Vec<ItemDefectReturnFeesProperty>;
116	/// Get <https://schema.org/itemDefectReturnLabelSource> from [`Self`] as borrowed slice.
117	fn get_item_defect_return_label_source(&self) -> &[ItemDefectReturnLabelSourceProperty];
118	/// Take <https://schema.org/itemDefectReturnLabelSource> from [`Self`] as owned vector.
119	fn take_item_defect_return_label_source(&mut self) -> Vec<ItemDefectReturnLabelSourceProperty>;
120	/// Get <https://schema.org/itemDefectReturnShippingFeesAmount> from [`Self`] as borrowed slice.
121	fn get_item_defect_return_shipping_fees_amount(
122		&self,
123	) -> &[ItemDefectReturnShippingFeesAmountProperty];
124	/// Take <https://schema.org/itemDefectReturnShippingFeesAmount> from [`Self`] as owned vector.
125	fn take_item_defect_return_shipping_fees_amount(
126		&mut self,
127	) -> Vec<ItemDefectReturnShippingFeesAmountProperty>;
128	/// Get <https://schema.org/merchantReturnDays> from [`Self`] as borrowed slice.
129	fn get_merchant_return_days(&self) -> &[MerchantReturnDaysProperty];
130	/// Take <https://schema.org/merchantReturnDays> from [`Self`] as owned vector.
131	fn take_merchant_return_days(&mut self) -> Vec<MerchantReturnDaysProperty>;
132	/// Get <https://schema.org/merchantReturnLink> from [`Self`] as borrowed slice.
133	fn get_merchant_return_link(&self) -> &[MerchantReturnLinkProperty];
134	/// Take <https://schema.org/merchantReturnLink> from [`Self`] as owned vector.
135	fn take_merchant_return_link(&mut self) -> Vec<MerchantReturnLinkProperty>;
136	/// Get <https://schema.org/refundType> from [`Self`] as borrowed slice.
137	fn get_refund_type(&self) -> &[RefundTypeProperty];
138	/// Take <https://schema.org/refundType> from [`Self`] as owned vector.
139	fn take_refund_type(&mut self) -> Vec<RefundTypeProperty>;
140	/// Get <https://schema.org/restockingFee> from [`Self`] as borrowed slice.
141	fn get_restocking_fee(&self) -> &[RestockingFeeProperty];
142	/// Take <https://schema.org/restockingFee> from [`Self`] as owned vector.
143	fn take_restocking_fee(&mut self) -> Vec<RestockingFeeProperty>;
144	/// Get <https://schema.org/returnFees> from [`Self`] as borrowed slice.
145	fn get_return_fees(&self) -> &[ReturnFeesProperty];
146	/// Take <https://schema.org/returnFees> from [`Self`] as owned vector.
147	fn take_return_fees(&mut self) -> Vec<ReturnFeesProperty>;
148	/// Get <https://schema.org/returnLabelSource> from [`Self`] as borrowed slice.
149	fn get_return_label_source(&self) -> &[ReturnLabelSourceProperty];
150	/// Take <https://schema.org/returnLabelSource> from [`Self`] as owned vector.
151	fn take_return_label_source(&mut self) -> Vec<ReturnLabelSourceProperty>;
152	/// Get <https://schema.org/returnMethod> from [`Self`] as borrowed slice.
153	fn get_return_method(&self) -> &[ReturnMethodProperty];
154	/// Take <https://schema.org/returnMethod> from [`Self`] as owned vector.
155	fn take_return_method(&mut self) -> Vec<ReturnMethodProperty>;
156	/// Get <https://schema.org/returnPolicyCategory> from [`Self`] as borrowed slice.
157	fn get_return_policy_category(&self) -> &[ReturnPolicyCategoryProperty];
158	/// Take <https://schema.org/returnPolicyCategory> from [`Self`] as owned vector.
159	fn take_return_policy_category(&mut self) -> Vec<ReturnPolicyCategoryProperty>;
160	/// Get <https://schema.org/returnPolicyCountry> from [`Self`] as borrowed slice.
161	fn get_return_policy_country(&self) -> &[ReturnPolicyCountryProperty];
162	/// Take <https://schema.org/returnPolicyCountry> from [`Self`] as owned vector.
163	fn take_return_policy_country(&mut self) -> Vec<ReturnPolicyCountryProperty>;
164	/// Get <https://schema.org/returnPolicySeasonalOverride> from [`Self`] as borrowed slice.
165	fn get_return_policy_seasonal_override(&self) -> &[ReturnPolicySeasonalOverrideProperty];
166	/// Take <https://schema.org/returnPolicySeasonalOverride> from [`Self`] as owned vector.
167	fn take_return_policy_seasonal_override(&mut self)
168	-> Vec<ReturnPolicySeasonalOverrideProperty>;
169	/// Get <https://schema.org/returnShippingFeesAmount> from [`Self`] as borrowed slice.
170	fn get_return_shipping_fees_amount(&self) -> &[ReturnShippingFeesAmountProperty];
171	/// Take <https://schema.org/returnShippingFeesAmount> from [`Self`] as owned vector.
172	fn take_return_shipping_fees_amount(&mut self) -> Vec<ReturnShippingFeesAmountProperty>;
173}
174impl MerchantReturnPolicyTrait for MerchantReturnPolicy {
175	fn get_additional_property(&self) -> &[AdditionalPropertyProperty] {
176		self.r#additional_property.as_slice()
177	}
178	fn take_additional_property(&mut self) -> Vec<AdditionalPropertyProperty> {
179		std::mem::take(&mut self.r#additional_property)
180	}
181	fn get_applicable_country(&self) -> &[ApplicableCountryProperty] {
182		self.r#applicable_country.as_slice()
183	}
184	fn take_applicable_country(&mut self) -> Vec<ApplicableCountryProperty> {
185		std::mem::take(&mut self.r#applicable_country)
186	}
187	fn get_customer_remorse_return_fees(&self) -> &[CustomerRemorseReturnFeesProperty] {
188		self.r#customer_remorse_return_fees.as_slice()
189	}
190	fn take_customer_remorse_return_fees(&mut self) -> Vec<CustomerRemorseReturnFeesProperty> {
191		std::mem::take(&mut self.r#customer_remorse_return_fees)
192	}
193	fn get_customer_remorse_return_label_source(
194		&self,
195	) -> &[CustomerRemorseReturnLabelSourceProperty] {
196		self.r#customer_remorse_return_label_source.as_slice()
197	}
198	fn take_customer_remorse_return_label_source(
199		&mut self,
200	) -> Vec<CustomerRemorseReturnLabelSourceProperty> {
201		std::mem::take(&mut self.r#customer_remorse_return_label_source)
202	}
203	fn get_customer_remorse_return_shipping_fees_amount(
204		&self,
205	) -> &[CustomerRemorseReturnShippingFeesAmountProperty] {
206		self.r#customer_remorse_return_shipping_fees_amount
207			.as_slice()
208	}
209	fn take_customer_remorse_return_shipping_fees_amount(
210		&mut self,
211	) -> Vec<CustomerRemorseReturnShippingFeesAmountProperty> {
212		std::mem::take(&mut self.r#customer_remorse_return_shipping_fees_amount)
213	}
214	fn get_in_store_returns_offered(&self) -> &[InStoreReturnsOfferedProperty] {
215		self.r#in_store_returns_offered.as_slice()
216	}
217	fn take_in_store_returns_offered(&mut self) -> Vec<InStoreReturnsOfferedProperty> {
218		std::mem::take(&mut self.r#in_store_returns_offered)
219	}
220	fn get_item_condition(&self) -> &[ItemConditionProperty] {
221		self.r#item_condition.as_slice()
222	}
223	fn take_item_condition(&mut self) -> Vec<ItemConditionProperty> {
224		std::mem::take(&mut self.r#item_condition)
225	}
226	fn get_item_defect_return_fees(&self) -> &[ItemDefectReturnFeesProperty] {
227		self.r#item_defect_return_fees.as_slice()
228	}
229	fn take_item_defect_return_fees(&mut self) -> Vec<ItemDefectReturnFeesProperty> {
230		std::mem::take(&mut self.r#item_defect_return_fees)
231	}
232	fn get_item_defect_return_label_source(&self) -> &[ItemDefectReturnLabelSourceProperty] {
233		self.r#item_defect_return_label_source.as_slice()
234	}
235	fn take_item_defect_return_label_source(&mut self) -> Vec<ItemDefectReturnLabelSourceProperty> {
236		std::mem::take(&mut self.r#item_defect_return_label_source)
237	}
238	fn get_item_defect_return_shipping_fees_amount(
239		&self,
240	) -> &[ItemDefectReturnShippingFeesAmountProperty] {
241		self.r#item_defect_return_shipping_fees_amount.as_slice()
242	}
243	fn take_item_defect_return_shipping_fees_amount(
244		&mut self,
245	) -> Vec<ItemDefectReturnShippingFeesAmountProperty> {
246		std::mem::take(&mut self.r#item_defect_return_shipping_fees_amount)
247	}
248	fn get_merchant_return_days(&self) -> &[MerchantReturnDaysProperty] {
249		self.r#merchant_return_days.as_slice()
250	}
251	fn take_merchant_return_days(&mut self) -> Vec<MerchantReturnDaysProperty> {
252		std::mem::take(&mut self.r#merchant_return_days)
253	}
254	fn get_merchant_return_link(&self) -> &[MerchantReturnLinkProperty] {
255		self.r#merchant_return_link.as_slice()
256	}
257	fn take_merchant_return_link(&mut self) -> Vec<MerchantReturnLinkProperty> {
258		std::mem::take(&mut self.r#merchant_return_link)
259	}
260	fn get_refund_type(&self) -> &[RefundTypeProperty] {
261		self.r#refund_type.as_slice()
262	}
263	fn take_refund_type(&mut self) -> Vec<RefundTypeProperty> {
264		std::mem::take(&mut self.r#refund_type)
265	}
266	fn get_restocking_fee(&self) -> &[RestockingFeeProperty] {
267		self.r#restocking_fee.as_slice()
268	}
269	fn take_restocking_fee(&mut self) -> Vec<RestockingFeeProperty> {
270		std::mem::take(&mut self.r#restocking_fee)
271	}
272	fn get_return_fees(&self) -> &[ReturnFeesProperty] {
273		self.r#return_fees.as_slice()
274	}
275	fn take_return_fees(&mut self) -> Vec<ReturnFeesProperty> {
276		std::mem::take(&mut self.r#return_fees)
277	}
278	fn get_return_label_source(&self) -> &[ReturnLabelSourceProperty] {
279		self.r#return_label_source.as_slice()
280	}
281	fn take_return_label_source(&mut self) -> Vec<ReturnLabelSourceProperty> {
282		std::mem::take(&mut self.r#return_label_source)
283	}
284	fn get_return_method(&self) -> &[ReturnMethodProperty] {
285		self.r#return_method.as_slice()
286	}
287	fn take_return_method(&mut self) -> Vec<ReturnMethodProperty> {
288		std::mem::take(&mut self.r#return_method)
289	}
290	fn get_return_policy_category(&self) -> &[ReturnPolicyCategoryProperty] {
291		self.r#return_policy_category.as_slice()
292	}
293	fn take_return_policy_category(&mut self) -> Vec<ReturnPolicyCategoryProperty> {
294		std::mem::take(&mut self.r#return_policy_category)
295	}
296	fn get_return_policy_country(&self) -> &[ReturnPolicyCountryProperty] {
297		self.r#return_policy_country.as_slice()
298	}
299	fn take_return_policy_country(&mut self) -> Vec<ReturnPolicyCountryProperty> {
300		std::mem::take(&mut self.r#return_policy_country)
301	}
302	fn get_return_policy_seasonal_override(&self) -> &[ReturnPolicySeasonalOverrideProperty] {
303		self.r#return_policy_seasonal_override.as_slice()
304	}
305	fn take_return_policy_seasonal_override(
306		&mut self,
307	) -> Vec<ReturnPolicySeasonalOverrideProperty> {
308		std::mem::take(&mut self.r#return_policy_seasonal_override)
309	}
310	fn get_return_shipping_fees_amount(&self) -> &[ReturnShippingFeesAmountProperty] {
311		self.r#return_shipping_fees_amount.as_slice()
312	}
313	fn take_return_shipping_fees_amount(&mut self) -> Vec<ReturnShippingFeesAmountProperty> {
314		std::mem::take(&mut self.r#return_shipping_fees_amount)
315	}
316}
317impl ThingTrait for MerchantReturnPolicy {
318	fn get_additional_type(&self) -> &[AdditionalTypeProperty] {
319		self.r#additional_type.as_slice()
320	}
321	fn take_additional_type(&mut self) -> Vec<AdditionalTypeProperty> {
322		std::mem::take(&mut self.r#additional_type)
323	}
324	fn get_alternate_name(&self) -> &[AlternateNameProperty] {
325		self.r#alternate_name.as_slice()
326	}
327	fn take_alternate_name(&mut self) -> Vec<AlternateNameProperty> {
328		std::mem::take(&mut self.r#alternate_name)
329	}
330	fn get_description(&self) -> &[DescriptionProperty] {
331		self.r#description.as_slice()
332	}
333	fn take_description(&mut self) -> Vec<DescriptionProperty> {
334		std::mem::take(&mut self.r#description)
335	}
336	fn get_disambiguating_description(&self) -> &[DisambiguatingDescriptionProperty] {
337		self.r#disambiguating_description.as_slice()
338	}
339	fn take_disambiguating_description(&mut self) -> Vec<DisambiguatingDescriptionProperty> {
340		std::mem::take(&mut self.r#disambiguating_description)
341	}
342	fn get_identifier(&self) -> &[IdentifierProperty] {
343		self.r#identifier.as_slice()
344	}
345	fn take_identifier(&mut self) -> Vec<IdentifierProperty> {
346		std::mem::take(&mut self.r#identifier)
347	}
348	fn get_image(&self) -> &[ImageProperty] {
349		self.r#image.as_slice()
350	}
351	fn take_image(&mut self) -> Vec<ImageProperty> {
352		std::mem::take(&mut self.r#image)
353	}
354	fn get_main_entity_of_page(&self) -> &[MainEntityOfPageProperty] {
355		self.r#main_entity_of_page.as_slice()
356	}
357	fn take_main_entity_of_page(&mut self) -> Vec<MainEntityOfPageProperty> {
358		std::mem::take(&mut self.r#main_entity_of_page)
359	}
360	fn get_name(&self) -> &[NameProperty] {
361		self.r#name.as_slice()
362	}
363	fn take_name(&mut self) -> Vec<NameProperty> {
364		std::mem::take(&mut self.r#name)
365	}
366	fn get_potential_action(&self) -> &[PotentialActionProperty] {
367		self.r#potential_action.as_slice()
368	}
369	fn take_potential_action(&mut self) -> Vec<PotentialActionProperty> {
370		std::mem::take(&mut self.r#potential_action)
371	}
372	fn get_same_as(&self) -> &[SameAsProperty] {
373		self.r#same_as.as_slice()
374	}
375	fn take_same_as(&mut self) -> Vec<SameAsProperty> {
376		std::mem::take(&mut self.r#same_as)
377	}
378	fn get_subject_of(&self) -> &[SubjectOfProperty] {
379		self.r#subject_of.as_slice()
380	}
381	fn take_subject_of(&mut self) -> Vec<SubjectOfProperty> {
382		std::mem::take(&mut self.r#subject_of)
383	}
384	fn get_url(&self) -> &[UrlProperty] {
385		self.r#url.as_slice()
386	}
387	fn take_url(&mut self) -> Vec<UrlProperty> {
388		std::mem::take(&mut self.r#url)
389	}
390}
391#[cfg(feature = "serde")]
392mod serde {
393	use std::{fmt, fmt::Formatter};
394
395	use ::serde::{
396		de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
397	};
398
399	use super::*;
400	impl Serialize for MerchantReturnPolicy {
401		fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
402		where
403			S: Serializer,
404		{
405			let len: usize = [
406				!Vec::is_empty(&self.r#additional_property) as usize,
407				!Vec::is_empty(&self.r#applicable_country) as usize,
408				!Vec::is_empty(&self.r#customer_remorse_return_fees) as usize,
409				!Vec::is_empty(&self.r#customer_remorse_return_label_source) as usize,
410				!Vec::is_empty(&self.r#customer_remorse_return_shipping_fees_amount) as usize,
411				!Vec::is_empty(&self.r#in_store_returns_offered) as usize,
412				!Vec::is_empty(&self.r#item_condition) as usize,
413				!Vec::is_empty(&self.r#item_defect_return_fees) as usize,
414				!Vec::is_empty(&self.r#item_defect_return_label_source) as usize,
415				!Vec::is_empty(&self.r#item_defect_return_shipping_fees_amount) as usize,
416				!Vec::is_empty(&self.r#merchant_return_days) as usize,
417				!Vec::is_empty(&self.r#merchant_return_link) as usize,
418				!Vec::is_empty(&self.r#refund_type) as usize,
419				!Vec::is_empty(&self.r#restocking_fee) as usize,
420				!Vec::is_empty(&self.r#return_fees) as usize,
421				!Vec::is_empty(&self.r#return_label_source) as usize,
422				!Vec::is_empty(&self.r#return_method) as usize,
423				!Vec::is_empty(&self.r#return_policy_category) as usize,
424				!Vec::is_empty(&self.r#return_policy_country) as usize,
425				!Vec::is_empty(&self.r#return_policy_seasonal_override) as usize,
426				!Vec::is_empty(&self.r#return_shipping_fees_amount) as usize,
427				!Vec::is_empty(&self.r#additional_type) as usize,
428				!Vec::is_empty(&self.r#alternate_name) as usize,
429				!Vec::is_empty(&self.r#description) as usize,
430				!Vec::is_empty(&self.r#disambiguating_description) as usize,
431				!Vec::is_empty(&self.r#identifier) as usize,
432				!Vec::is_empty(&self.r#image) as usize,
433				!Vec::is_empty(&self.r#main_entity_of_page) as usize,
434				!Vec::is_empty(&self.r#name) as usize,
435				!Vec::is_empty(&self.r#potential_action) as usize,
436				!Vec::is_empty(&self.r#same_as) as usize,
437				!Vec::is_empty(&self.r#subject_of) as usize,
438				!Vec::is_empty(&self.r#url) as usize,
439			]
440			.iter()
441			.sum();
442			let mut serialize_struct =
443				Serializer::serialize_struct(serializer, "MerchantReturnPolicy", len)?;
444			if !Vec::is_empty(&self.r#additional_property) {
445				serialize_struct.serialize_field("additionalProperty", {
446					struct SerializeWith<'a>(&'a Vec<AdditionalPropertyProperty>);
447					impl<'a> Serialize for SerializeWith<'a> {
448						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
449						where
450							S: Serializer,
451						{
452							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
453								self.0, serializer,
454							)
455						}
456					}
457					&SerializeWith(&self.r#additional_property)
458				})?;
459			} else {
460				serialize_struct.skip_field("additionalProperty")?;
461			}
462			if !Vec::is_empty(&self.r#applicable_country) {
463				serialize_struct.serialize_field("applicableCountry", {
464					struct SerializeWith<'a>(&'a Vec<ApplicableCountryProperty>);
465					impl<'a> Serialize for SerializeWith<'a> {
466						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
467						where
468							S: Serializer,
469						{
470							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
471								self.0, serializer,
472							)
473						}
474					}
475					&SerializeWith(&self.r#applicable_country)
476				})?;
477			} else {
478				serialize_struct.skip_field("applicableCountry")?;
479			}
480			if !Vec::is_empty(&self.r#customer_remorse_return_fees) {
481				serialize_struct.serialize_field("customerRemorseReturnFees", {
482					struct SerializeWith<'a>(&'a Vec<CustomerRemorseReturnFeesProperty>);
483					impl<'a> Serialize for SerializeWith<'a> {
484						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
485						where
486							S: Serializer,
487						{
488							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
489								self.0, serializer,
490							)
491						}
492					}
493					&SerializeWith(&self.r#customer_remorse_return_fees)
494				})?;
495			} else {
496				serialize_struct.skip_field("customerRemorseReturnFees")?;
497			}
498			if !Vec::is_empty(&self.r#customer_remorse_return_label_source) {
499				serialize_struct.serialize_field("customerRemorseReturnLabelSource", {
500					struct SerializeWith<'a>(&'a Vec<CustomerRemorseReturnLabelSourceProperty>);
501					impl<'a> Serialize for SerializeWith<'a> {
502						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
503						where
504							S: Serializer,
505						{
506							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
507								self.0, serializer,
508							)
509						}
510					}
511					&SerializeWith(&self.r#customer_remorse_return_label_source)
512				})?;
513			} else {
514				serialize_struct.skip_field("customerRemorseReturnLabelSource")?;
515			}
516			if !Vec::is_empty(&self.r#customer_remorse_return_shipping_fees_amount) {
517				serialize_struct.serialize_field("customerRemorseReturnShippingFeesAmount", {
518					struct SerializeWith<'a>(
519						&'a Vec<CustomerRemorseReturnShippingFeesAmountProperty>,
520					);
521					impl<'a> Serialize for SerializeWith<'a> {
522						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
523						where
524							S: Serializer,
525						{
526							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
527								self.0, serializer,
528							)
529						}
530					}
531					&SerializeWith(&self.r#customer_remorse_return_shipping_fees_amount)
532				})?;
533			} else {
534				serialize_struct.skip_field("customerRemorseReturnShippingFeesAmount")?;
535			}
536			if !Vec::is_empty(&self.r#in_store_returns_offered) {
537				serialize_struct.serialize_field("inStoreReturnsOffered", {
538					struct SerializeWith<'a>(&'a Vec<InStoreReturnsOfferedProperty>);
539					impl<'a> Serialize for SerializeWith<'a> {
540						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
541						where
542							S: Serializer,
543						{
544							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
545								self.0, serializer,
546							)
547						}
548					}
549					&SerializeWith(&self.r#in_store_returns_offered)
550				})?;
551			} else {
552				serialize_struct.skip_field("inStoreReturnsOffered")?;
553			}
554			if !Vec::is_empty(&self.r#item_condition) {
555				serialize_struct.serialize_field("itemCondition", {
556					struct SerializeWith<'a>(&'a Vec<ItemConditionProperty>);
557					impl<'a> Serialize for SerializeWith<'a> {
558						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
559						where
560							S: Serializer,
561						{
562							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
563								self.0, serializer,
564							)
565						}
566					}
567					&SerializeWith(&self.r#item_condition)
568				})?;
569			} else {
570				serialize_struct.skip_field("itemCondition")?;
571			}
572			if !Vec::is_empty(&self.r#item_defect_return_fees) {
573				serialize_struct.serialize_field("itemDefectReturnFees", {
574					struct SerializeWith<'a>(&'a Vec<ItemDefectReturnFeesProperty>);
575					impl<'a> Serialize for SerializeWith<'a> {
576						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
577						where
578							S: Serializer,
579						{
580							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
581								self.0, serializer,
582							)
583						}
584					}
585					&SerializeWith(&self.r#item_defect_return_fees)
586				})?;
587			} else {
588				serialize_struct.skip_field("itemDefectReturnFees")?;
589			}
590			if !Vec::is_empty(&self.r#item_defect_return_label_source) {
591				serialize_struct.serialize_field("itemDefectReturnLabelSource", {
592					struct SerializeWith<'a>(&'a Vec<ItemDefectReturnLabelSourceProperty>);
593					impl<'a> Serialize for SerializeWith<'a> {
594						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
595						where
596							S: Serializer,
597						{
598							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
599								self.0, serializer,
600							)
601						}
602					}
603					&SerializeWith(&self.r#item_defect_return_label_source)
604				})?;
605			} else {
606				serialize_struct.skip_field("itemDefectReturnLabelSource")?;
607			}
608			if !Vec::is_empty(&self.r#item_defect_return_shipping_fees_amount) {
609				serialize_struct.serialize_field("itemDefectReturnShippingFeesAmount", {
610					struct SerializeWith<'a>(&'a Vec<ItemDefectReturnShippingFeesAmountProperty>);
611					impl<'a> Serialize for SerializeWith<'a> {
612						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
613						where
614							S: Serializer,
615						{
616							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
617								self.0, serializer,
618							)
619						}
620					}
621					&SerializeWith(&self.r#item_defect_return_shipping_fees_amount)
622				})?;
623			} else {
624				serialize_struct.skip_field("itemDefectReturnShippingFeesAmount")?;
625			}
626			if !Vec::is_empty(&self.r#merchant_return_days) {
627				serialize_struct.serialize_field("merchantReturnDays", {
628					struct SerializeWith<'a>(&'a Vec<MerchantReturnDaysProperty>);
629					impl<'a> Serialize for SerializeWith<'a> {
630						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
631						where
632							S: Serializer,
633						{
634							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
635								self.0, serializer,
636							)
637						}
638					}
639					&SerializeWith(&self.r#merchant_return_days)
640				})?;
641			} else {
642				serialize_struct.skip_field("merchantReturnDays")?;
643			}
644			if !Vec::is_empty(&self.r#merchant_return_link) {
645				serialize_struct.serialize_field("merchantReturnLink", {
646					struct SerializeWith<'a>(&'a Vec<MerchantReturnLinkProperty>);
647					impl<'a> Serialize for SerializeWith<'a> {
648						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
649						where
650							S: Serializer,
651						{
652							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
653								self.0, serializer,
654							)
655						}
656					}
657					&SerializeWith(&self.r#merchant_return_link)
658				})?;
659			} else {
660				serialize_struct.skip_field("merchantReturnLink")?;
661			}
662			if !Vec::is_empty(&self.r#refund_type) {
663				serialize_struct.serialize_field("refundType", {
664					struct SerializeWith<'a>(&'a Vec<RefundTypeProperty>);
665					impl<'a> Serialize for SerializeWith<'a> {
666						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
667						where
668							S: Serializer,
669						{
670							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
671								self.0, serializer,
672							)
673						}
674					}
675					&SerializeWith(&self.r#refund_type)
676				})?;
677			} else {
678				serialize_struct.skip_field("refundType")?;
679			}
680			if !Vec::is_empty(&self.r#restocking_fee) {
681				serialize_struct.serialize_field("restockingFee", {
682					struct SerializeWith<'a>(&'a Vec<RestockingFeeProperty>);
683					impl<'a> Serialize for SerializeWith<'a> {
684						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
685						where
686							S: Serializer,
687						{
688							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
689								self.0, serializer,
690							)
691						}
692					}
693					&SerializeWith(&self.r#restocking_fee)
694				})?;
695			} else {
696				serialize_struct.skip_field("restockingFee")?;
697			}
698			if !Vec::is_empty(&self.r#return_fees) {
699				serialize_struct.serialize_field("returnFees", {
700					struct SerializeWith<'a>(&'a Vec<ReturnFeesProperty>);
701					impl<'a> Serialize for SerializeWith<'a> {
702						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
703						where
704							S: Serializer,
705						{
706							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
707								self.0, serializer,
708							)
709						}
710					}
711					&SerializeWith(&self.r#return_fees)
712				})?;
713			} else {
714				serialize_struct.skip_field("returnFees")?;
715			}
716			if !Vec::is_empty(&self.r#return_label_source) {
717				serialize_struct.serialize_field("returnLabelSource", {
718					struct SerializeWith<'a>(&'a Vec<ReturnLabelSourceProperty>);
719					impl<'a> Serialize for SerializeWith<'a> {
720						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
721						where
722							S: Serializer,
723						{
724							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
725								self.0, serializer,
726							)
727						}
728					}
729					&SerializeWith(&self.r#return_label_source)
730				})?;
731			} else {
732				serialize_struct.skip_field("returnLabelSource")?;
733			}
734			if !Vec::is_empty(&self.r#return_method) {
735				serialize_struct.serialize_field("returnMethod", {
736					struct SerializeWith<'a>(&'a Vec<ReturnMethodProperty>);
737					impl<'a> Serialize for SerializeWith<'a> {
738						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
739						where
740							S: Serializer,
741						{
742							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
743								self.0, serializer,
744							)
745						}
746					}
747					&SerializeWith(&self.r#return_method)
748				})?;
749			} else {
750				serialize_struct.skip_field("returnMethod")?;
751			}
752			if !Vec::is_empty(&self.r#return_policy_category) {
753				serialize_struct.serialize_field("returnPolicyCategory", {
754					struct SerializeWith<'a>(&'a Vec<ReturnPolicyCategoryProperty>);
755					impl<'a> Serialize for SerializeWith<'a> {
756						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
757						where
758							S: Serializer,
759						{
760							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
761								self.0, serializer,
762							)
763						}
764					}
765					&SerializeWith(&self.r#return_policy_category)
766				})?;
767			} else {
768				serialize_struct.skip_field("returnPolicyCategory")?;
769			}
770			if !Vec::is_empty(&self.r#return_policy_country) {
771				serialize_struct.serialize_field("returnPolicyCountry", {
772					struct SerializeWith<'a>(&'a Vec<ReturnPolicyCountryProperty>);
773					impl<'a> Serialize for SerializeWith<'a> {
774						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
775						where
776							S: Serializer,
777						{
778							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
779								self.0, serializer,
780							)
781						}
782					}
783					&SerializeWith(&self.r#return_policy_country)
784				})?;
785			} else {
786				serialize_struct.skip_field("returnPolicyCountry")?;
787			}
788			if !Vec::is_empty(&self.r#return_policy_seasonal_override) {
789				serialize_struct.serialize_field("returnPolicySeasonalOverride", {
790					struct SerializeWith<'a>(&'a Vec<ReturnPolicySeasonalOverrideProperty>);
791					impl<'a> Serialize for SerializeWith<'a> {
792						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
793						where
794							S: Serializer,
795						{
796							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
797								self.0, serializer,
798							)
799						}
800					}
801					&SerializeWith(&self.r#return_policy_seasonal_override)
802				})?;
803			} else {
804				serialize_struct.skip_field("returnPolicySeasonalOverride")?;
805			}
806			if !Vec::is_empty(&self.r#return_shipping_fees_amount) {
807				serialize_struct.serialize_field("returnShippingFeesAmount", {
808					struct SerializeWith<'a>(&'a Vec<ReturnShippingFeesAmountProperty>);
809					impl<'a> Serialize for SerializeWith<'a> {
810						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
811						where
812							S: Serializer,
813						{
814							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
815								self.0, serializer,
816							)
817						}
818					}
819					&SerializeWith(&self.r#return_shipping_fees_amount)
820				})?;
821			} else {
822				serialize_struct.skip_field("returnShippingFeesAmount")?;
823			}
824			if !Vec::is_empty(&self.r#additional_type) {
825				serialize_struct.serialize_field("additionalType", {
826					struct SerializeWith<'a>(&'a Vec<AdditionalTypeProperty>);
827					impl<'a> Serialize for SerializeWith<'a> {
828						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
829						where
830							S: Serializer,
831						{
832							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
833								self.0, serializer,
834							)
835						}
836					}
837					&SerializeWith(&self.r#additional_type)
838				})?;
839			} else {
840				serialize_struct.skip_field("additionalType")?;
841			}
842			if !Vec::is_empty(&self.r#alternate_name) {
843				serialize_struct.serialize_field("alternateName", {
844					struct SerializeWith<'a>(&'a Vec<AlternateNameProperty>);
845					impl<'a> Serialize for SerializeWith<'a> {
846						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
847						where
848							S: Serializer,
849						{
850							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
851								self.0, serializer,
852							)
853						}
854					}
855					&SerializeWith(&self.r#alternate_name)
856				})?;
857			} else {
858				serialize_struct.skip_field("alternateName")?;
859			}
860			if !Vec::is_empty(&self.r#description) {
861				serialize_struct.serialize_field("description", {
862					struct SerializeWith<'a>(&'a Vec<DescriptionProperty>);
863					impl<'a> Serialize for SerializeWith<'a> {
864						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
865						where
866							S: Serializer,
867						{
868							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
869								self.0, serializer,
870							)
871						}
872					}
873					&SerializeWith(&self.r#description)
874				})?;
875			} else {
876				serialize_struct.skip_field("description")?;
877			}
878			if !Vec::is_empty(&self.r#disambiguating_description) {
879				serialize_struct.serialize_field("disambiguatingDescription", {
880					struct SerializeWith<'a>(&'a Vec<DisambiguatingDescriptionProperty>);
881					impl<'a> Serialize for SerializeWith<'a> {
882						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
883						where
884							S: Serializer,
885						{
886							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
887								self.0, serializer,
888							)
889						}
890					}
891					&SerializeWith(&self.r#disambiguating_description)
892				})?;
893			} else {
894				serialize_struct.skip_field("disambiguatingDescription")?;
895			}
896			if !Vec::is_empty(&self.r#identifier) {
897				serialize_struct.serialize_field("identifier", {
898					struct SerializeWith<'a>(&'a Vec<IdentifierProperty>);
899					impl<'a> Serialize for SerializeWith<'a> {
900						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
901						where
902							S: Serializer,
903						{
904							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
905								self.0, serializer,
906							)
907						}
908					}
909					&SerializeWith(&self.r#identifier)
910				})?;
911			} else {
912				serialize_struct.skip_field("identifier")?;
913			}
914			if !Vec::is_empty(&self.r#image) {
915				serialize_struct.serialize_field("image", {
916					struct SerializeWith<'a>(&'a Vec<ImageProperty>);
917					impl<'a> Serialize for SerializeWith<'a> {
918						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
919						where
920							S: Serializer,
921						{
922							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
923								self.0, serializer,
924							)
925						}
926					}
927					&SerializeWith(&self.r#image)
928				})?;
929			} else {
930				serialize_struct.skip_field("image")?;
931			}
932			if !Vec::is_empty(&self.r#main_entity_of_page) {
933				serialize_struct.serialize_field("mainEntityOfPage", {
934					struct SerializeWith<'a>(&'a Vec<MainEntityOfPageProperty>);
935					impl<'a> Serialize for SerializeWith<'a> {
936						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
937						where
938							S: Serializer,
939						{
940							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
941								self.0, serializer,
942							)
943						}
944					}
945					&SerializeWith(&self.r#main_entity_of_page)
946				})?;
947			} else {
948				serialize_struct.skip_field("mainEntityOfPage")?;
949			}
950			if !Vec::is_empty(&self.r#name) {
951				serialize_struct.serialize_field("name", {
952					struct SerializeWith<'a>(&'a Vec<NameProperty>);
953					impl<'a> Serialize for SerializeWith<'a> {
954						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
955						where
956							S: Serializer,
957						{
958							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
959								self.0, serializer,
960							)
961						}
962					}
963					&SerializeWith(&self.r#name)
964				})?;
965			} else {
966				serialize_struct.skip_field("name")?;
967			}
968			if !Vec::is_empty(&self.r#potential_action) {
969				serialize_struct.serialize_field("potentialAction", {
970					struct SerializeWith<'a>(&'a Vec<PotentialActionProperty>);
971					impl<'a> Serialize for SerializeWith<'a> {
972						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
973						where
974							S: Serializer,
975						{
976							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
977								self.0, serializer,
978							)
979						}
980					}
981					&SerializeWith(&self.r#potential_action)
982				})?;
983			} else {
984				serialize_struct.skip_field("potentialAction")?;
985			}
986			if !Vec::is_empty(&self.r#same_as) {
987				serialize_struct.serialize_field("sameAs", {
988					struct SerializeWith<'a>(&'a Vec<SameAsProperty>);
989					impl<'a> Serialize for SerializeWith<'a> {
990						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
991						where
992							S: Serializer,
993						{
994							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
995								self.0, serializer,
996							)
997						}
998					}
999					&SerializeWith(&self.r#same_as)
1000				})?;
1001			} else {
1002				serialize_struct.skip_field("sameAs")?;
1003			}
1004			if !Vec::is_empty(&self.r#subject_of) {
1005				serialize_struct.serialize_field("subjectOf", {
1006					struct SerializeWith<'a>(&'a Vec<SubjectOfProperty>);
1007					impl<'a> Serialize for SerializeWith<'a> {
1008						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1009						where
1010							S: Serializer,
1011						{
1012							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1013								self.0, serializer,
1014							)
1015						}
1016					}
1017					&SerializeWith(&self.r#subject_of)
1018				})?;
1019			} else {
1020				serialize_struct.skip_field("subjectOf")?;
1021			}
1022			if !Vec::is_empty(&self.r#url) {
1023				serialize_struct.serialize_field("url", {
1024					struct SerializeWith<'a>(&'a Vec<UrlProperty>);
1025					impl<'a> Serialize for SerializeWith<'a> {
1026						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1027						where
1028							S: Serializer,
1029						{
1030							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1031								self.0, serializer,
1032							)
1033						}
1034					}
1035					&SerializeWith(&self.r#url)
1036				})?;
1037			} else {
1038				serialize_struct.skip_field("url")?;
1039			}
1040			serialize_struct.end()
1041		}
1042	}
1043	impl<'de> Deserialize<'de> for MerchantReturnPolicy {
1044		fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1045		where
1046			D: Deserializer<'de>,
1047		{
1048			enum Field {
1049				AdditionalProperty,
1050				ApplicableCountry,
1051				CustomerRemorseReturnFees,
1052				CustomerRemorseReturnLabelSource,
1053				CustomerRemorseReturnShippingFeesAmount,
1054				InStoreReturnsOffered,
1055				ItemCondition,
1056				ItemDefectReturnFees,
1057				ItemDefectReturnLabelSource,
1058				ItemDefectReturnShippingFeesAmount,
1059				MerchantReturnDays,
1060				MerchantReturnLink,
1061				RefundType,
1062				RestockingFee,
1063				ReturnFees,
1064				ReturnLabelSource,
1065				ReturnMethod,
1066				ReturnPolicyCategory,
1067				ReturnPolicyCountry,
1068				ReturnPolicySeasonalOverride,
1069				ReturnShippingFeesAmount,
1070				AdditionalType,
1071				AlternateName,
1072				Description,
1073				DisambiguatingDescription,
1074				Identifier,
1075				Image,
1076				MainEntityOfPage,
1077				Name,
1078				PotentialAction,
1079				SameAs,
1080				SubjectOf,
1081				Url,
1082				Ignore,
1083			}
1084			struct FieldVisitor;
1085			impl<'de> Visitor<'de> for FieldVisitor {
1086				type Value = Field;
1087				fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
1088					formatter.write_str("field identifier")
1089				}
1090				fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
1091				where
1092					E: de::Error,
1093				{
1094					match value {
1095						"additionalProperty" => Ok(Field::AdditionalProperty),
1096						"applicableCountry" => Ok(Field::ApplicableCountry),
1097						"customerRemorseReturnFees" => Ok(Field::CustomerRemorseReturnFees),
1098						"customerRemorseReturnLabelSource" => {
1099							Ok(Field::CustomerRemorseReturnLabelSource)
1100						}
1101						"customerRemorseReturnShippingFeesAmount" => {
1102							Ok(Field::CustomerRemorseReturnShippingFeesAmount)
1103						}
1104						"inStoreReturnsOffered" => Ok(Field::InStoreReturnsOffered),
1105						"itemCondition" => Ok(Field::ItemCondition),
1106						"itemDefectReturnFees" => Ok(Field::ItemDefectReturnFees),
1107						"itemDefectReturnLabelSource" => Ok(Field::ItemDefectReturnLabelSource),
1108						"itemDefectReturnShippingFeesAmount" => {
1109							Ok(Field::ItemDefectReturnShippingFeesAmount)
1110						}
1111						"merchantReturnDays" => Ok(Field::MerchantReturnDays),
1112						"merchantReturnLink" => Ok(Field::MerchantReturnLink),
1113						"refundType" => Ok(Field::RefundType),
1114						"restockingFee" => Ok(Field::RestockingFee),
1115						"returnFees" => Ok(Field::ReturnFees),
1116						"returnLabelSource" => Ok(Field::ReturnLabelSource),
1117						"returnMethod" => Ok(Field::ReturnMethod),
1118						"returnPolicyCategory" => Ok(Field::ReturnPolicyCategory),
1119						"returnPolicyCountry" => Ok(Field::ReturnPolicyCountry),
1120						"returnPolicySeasonalOverride" => Ok(Field::ReturnPolicySeasonalOverride),
1121						"returnShippingFeesAmount" => Ok(Field::ReturnShippingFeesAmount),
1122						"additionalType" => Ok(Field::AdditionalType),
1123						"alternateName" => Ok(Field::AlternateName),
1124						"description" => Ok(Field::Description),
1125						"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
1126						"identifier" => Ok(Field::Identifier),
1127						"image" => Ok(Field::Image),
1128						"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
1129						"name" => Ok(Field::Name),
1130						"potentialAction" => Ok(Field::PotentialAction),
1131						"sameAs" => Ok(Field::SameAs),
1132						"subjectOf" => Ok(Field::SubjectOf),
1133						"url" => Ok(Field::Url),
1134						"id" | "type" => Ok(Field::Ignore),
1135						_ => Err(de::Error::unknown_field(value, FIELDS)),
1136					}
1137				}
1138				fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
1139				where
1140					E: de::Error,
1141				{
1142					match value {
1143						b"additionalProperty" => Ok(Field::AdditionalProperty),
1144						b"applicableCountry" => Ok(Field::ApplicableCountry),
1145						b"customerRemorseReturnFees" => Ok(Field::CustomerRemorseReturnFees),
1146						b"customerRemorseReturnLabelSource" => {
1147							Ok(Field::CustomerRemorseReturnLabelSource)
1148						}
1149						b"customerRemorseReturnShippingFeesAmount" => {
1150							Ok(Field::CustomerRemorseReturnShippingFeesAmount)
1151						}
1152						b"inStoreReturnsOffered" => Ok(Field::InStoreReturnsOffered),
1153						b"itemCondition" => Ok(Field::ItemCondition),
1154						b"itemDefectReturnFees" => Ok(Field::ItemDefectReturnFees),
1155						b"itemDefectReturnLabelSource" => Ok(Field::ItemDefectReturnLabelSource),
1156						b"itemDefectReturnShippingFeesAmount" => {
1157							Ok(Field::ItemDefectReturnShippingFeesAmount)
1158						}
1159						b"merchantReturnDays" => Ok(Field::MerchantReturnDays),
1160						b"merchantReturnLink" => Ok(Field::MerchantReturnLink),
1161						b"refundType" => Ok(Field::RefundType),
1162						b"restockingFee" => Ok(Field::RestockingFee),
1163						b"returnFees" => Ok(Field::ReturnFees),
1164						b"returnLabelSource" => Ok(Field::ReturnLabelSource),
1165						b"returnMethod" => Ok(Field::ReturnMethod),
1166						b"returnPolicyCategory" => Ok(Field::ReturnPolicyCategory),
1167						b"returnPolicyCountry" => Ok(Field::ReturnPolicyCountry),
1168						b"returnPolicySeasonalOverride" => Ok(Field::ReturnPolicySeasonalOverride),
1169						b"returnShippingFeesAmount" => Ok(Field::ReturnShippingFeesAmount),
1170						b"additionalType" => Ok(Field::AdditionalType),
1171						b"alternateName" => Ok(Field::AlternateName),
1172						b"description" => Ok(Field::Description),
1173						b"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
1174						b"identifier" => Ok(Field::Identifier),
1175						b"image" => Ok(Field::Image),
1176						b"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
1177						b"name" => Ok(Field::Name),
1178						b"potentialAction" => Ok(Field::PotentialAction),
1179						b"sameAs" => Ok(Field::SameAs),
1180						b"subjectOf" => Ok(Field::SubjectOf),
1181						b"url" => Ok(Field::Url),
1182						b"id" | b"type" => Ok(Field::Ignore),
1183						_ => {
1184							let value = &String::from_utf8_lossy(value);
1185							Err(de::Error::unknown_field(value, FIELDS))
1186						}
1187					}
1188				}
1189			}
1190			impl<'de> Deserialize<'de> for Field {
1191				fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1192				where
1193					D: Deserializer<'de>,
1194				{
1195					deserializer.deserialize_identifier(FieldVisitor)
1196				}
1197			}
1198			struct ClassVisitor;
1199			impl<'de> Visitor<'de> for ClassVisitor {
1200				type Value = MerchantReturnPolicy;
1201				fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
1202					formatter.write_str("schema.org schema MerchantReturnPolicy")
1203				}
1204				fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
1205				where
1206					A: de::MapAccess<'de>,
1207				{
1208					let mut r#additional_property_property = None;
1209					let mut r#applicable_country_property = None;
1210					let mut r#customer_remorse_return_fees_property = None;
1211					let mut r#customer_remorse_return_label_source_property = None;
1212					let mut r#customer_remorse_return_shipping_fees_amount_property = None;
1213					let mut r#in_store_returns_offered_property = None;
1214					let mut r#item_condition_property = None;
1215					let mut r#item_defect_return_fees_property = None;
1216					let mut r#item_defect_return_label_source_property = None;
1217					let mut r#item_defect_return_shipping_fees_amount_property = None;
1218					let mut r#merchant_return_days_property = None;
1219					let mut r#merchant_return_link_property = None;
1220					let mut r#refund_type_property = None;
1221					let mut r#restocking_fee_property = None;
1222					let mut r#return_fees_property = None;
1223					let mut r#return_label_source_property = None;
1224					let mut r#return_method_property = None;
1225					let mut r#return_policy_category_property = None;
1226					let mut r#return_policy_country_property = None;
1227					let mut r#return_policy_seasonal_override_property = None;
1228					let mut r#return_shipping_fees_amount_property = None;
1229					let mut r#additional_type_property = None;
1230					let mut r#alternate_name_property = None;
1231					let mut r#description_property = None;
1232					let mut r#disambiguating_description_property = None;
1233					let mut r#identifier_property = None;
1234					let mut r#image_property = None;
1235					let mut r#main_entity_of_page_property = None;
1236					let mut r#name_property = None;
1237					let mut r#potential_action_property = None;
1238					let mut r#same_as_property = None;
1239					let mut r#subject_of_property = None;
1240					let mut r#url_property = None;
1241					while let Some(key) = map.next_key::<Field>()? {
1242						match key {
1243							Field::AdditionalProperty => {
1244								if r#additional_property_property.is_some() {
1245									return Err(<A::Error as de::Error>::duplicate_field(
1246										"additionalProperty",
1247									));
1248								}
1249								r#additional_property_property = Some({
1250									struct DeserializeWith(Vec<AdditionalPropertyProperty>);
1251									impl<'de> Deserialize<'de> for DeserializeWith {
1252										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1253										where
1254											D: Deserializer<'de>,
1255										{
1256											Ok(DeserializeWith(serde_with::As::<
1257												serde_with::OneOrMany<serde_with::Same>,
1258											>::deserialize(deserializer)?))
1259										}
1260									}
1261									match map.next_value::<DeserializeWith>() {
1262										Ok(deserialize_with) => deserialize_with.0,
1263										Err(err) => {
1264											return Err(err);
1265										}
1266									}
1267								});
1268							}
1269							Field::ApplicableCountry => {
1270								if r#applicable_country_property.is_some() {
1271									return Err(<A::Error as de::Error>::duplicate_field(
1272										"applicableCountry",
1273									));
1274								}
1275								r#applicable_country_property = Some({
1276									struct DeserializeWith(Vec<ApplicableCountryProperty>);
1277									impl<'de> Deserialize<'de> for DeserializeWith {
1278										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1279										where
1280											D: Deserializer<'de>,
1281										{
1282											Ok(DeserializeWith(serde_with::As::<
1283												serde_with::OneOrMany<serde_with::Same>,
1284											>::deserialize(deserializer)?))
1285										}
1286									}
1287									match map.next_value::<DeserializeWith>() {
1288										Ok(deserialize_with) => deserialize_with.0,
1289										Err(err) => {
1290											return Err(err);
1291										}
1292									}
1293								});
1294							}
1295							Field::CustomerRemorseReturnFees => {
1296								if r#customer_remorse_return_fees_property.is_some() {
1297									return Err(<A::Error as de::Error>::duplicate_field(
1298										"customerRemorseReturnFees",
1299									));
1300								}
1301								r#customer_remorse_return_fees_property = Some({
1302									struct DeserializeWith(Vec<CustomerRemorseReturnFeesProperty>);
1303									impl<'de> Deserialize<'de> for DeserializeWith {
1304										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1305										where
1306											D: Deserializer<'de>,
1307										{
1308											Ok(DeserializeWith(serde_with::As::<
1309												serde_with::OneOrMany<serde_with::Same>,
1310											>::deserialize(deserializer)?))
1311										}
1312									}
1313									match map.next_value::<DeserializeWith>() {
1314										Ok(deserialize_with) => deserialize_with.0,
1315										Err(err) => {
1316											return Err(err);
1317										}
1318									}
1319								});
1320							}
1321							Field::CustomerRemorseReturnLabelSource => {
1322								if r#customer_remorse_return_label_source_property.is_some() {
1323									return Err(<A::Error as de::Error>::duplicate_field(
1324										"customerRemorseReturnLabelSource",
1325									));
1326								}
1327								r#customer_remorse_return_label_source_property = Some({
1328									struct DeserializeWith(
1329										Vec<CustomerRemorseReturnLabelSourceProperty>,
1330									);
1331									impl<'de> Deserialize<'de> for DeserializeWith {
1332										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1333										where
1334											D: Deserializer<'de>,
1335										{
1336											Ok(DeserializeWith(serde_with::As::<
1337												serde_with::OneOrMany<serde_with::Same>,
1338											>::deserialize(deserializer)?))
1339										}
1340									}
1341									match map.next_value::<DeserializeWith>() {
1342										Ok(deserialize_with) => deserialize_with.0,
1343										Err(err) => {
1344											return Err(err);
1345										}
1346									}
1347								});
1348							}
1349							Field::CustomerRemorseReturnShippingFeesAmount => {
1350								if r#customer_remorse_return_shipping_fees_amount_property.is_some()
1351								{
1352									return Err(<A::Error as de::Error>::duplicate_field(
1353										"customerRemorseReturnShippingFeesAmount",
1354									));
1355								}
1356								r#customer_remorse_return_shipping_fees_amount_property = Some({
1357									struct DeserializeWith(
1358										Vec<CustomerRemorseReturnShippingFeesAmountProperty>,
1359									);
1360									impl<'de> Deserialize<'de> for DeserializeWith {
1361										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1362										where
1363											D: Deserializer<'de>,
1364										{
1365											Ok(DeserializeWith(serde_with::As::<
1366												serde_with::OneOrMany<serde_with::Same>,
1367											>::deserialize(deserializer)?))
1368										}
1369									}
1370									match map.next_value::<DeserializeWith>() {
1371										Ok(deserialize_with) => deserialize_with.0,
1372										Err(err) => {
1373											return Err(err);
1374										}
1375									}
1376								});
1377							}
1378							Field::InStoreReturnsOffered => {
1379								if r#in_store_returns_offered_property.is_some() {
1380									return Err(<A::Error as de::Error>::duplicate_field(
1381										"inStoreReturnsOffered",
1382									));
1383								}
1384								r#in_store_returns_offered_property = Some({
1385									struct DeserializeWith(Vec<InStoreReturnsOfferedProperty>);
1386									impl<'de> Deserialize<'de> for DeserializeWith {
1387										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1388										where
1389											D: Deserializer<'de>,
1390										{
1391											Ok(DeserializeWith(serde_with::As::<
1392												serde_with::OneOrMany<serde_with::Same>,
1393											>::deserialize(deserializer)?))
1394										}
1395									}
1396									match map.next_value::<DeserializeWith>() {
1397										Ok(deserialize_with) => deserialize_with.0,
1398										Err(err) => {
1399											return Err(err);
1400										}
1401									}
1402								});
1403							}
1404							Field::ItemCondition => {
1405								if r#item_condition_property.is_some() {
1406									return Err(<A::Error as de::Error>::duplicate_field(
1407										"itemCondition",
1408									));
1409								}
1410								r#item_condition_property = Some({
1411									struct DeserializeWith(Vec<ItemConditionProperty>);
1412									impl<'de> Deserialize<'de> for DeserializeWith {
1413										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1414										where
1415											D: Deserializer<'de>,
1416										{
1417											Ok(DeserializeWith(serde_with::As::<
1418												serde_with::OneOrMany<serde_with::Same>,
1419											>::deserialize(deserializer)?))
1420										}
1421									}
1422									match map.next_value::<DeserializeWith>() {
1423										Ok(deserialize_with) => deserialize_with.0,
1424										Err(err) => {
1425											return Err(err);
1426										}
1427									}
1428								});
1429							}
1430							Field::ItemDefectReturnFees => {
1431								if r#item_defect_return_fees_property.is_some() {
1432									return Err(<A::Error as de::Error>::duplicate_field(
1433										"itemDefectReturnFees",
1434									));
1435								}
1436								r#item_defect_return_fees_property = Some({
1437									struct DeserializeWith(Vec<ItemDefectReturnFeesProperty>);
1438									impl<'de> Deserialize<'de> for DeserializeWith {
1439										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1440										where
1441											D: Deserializer<'de>,
1442										{
1443											Ok(DeserializeWith(serde_with::As::<
1444												serde_with::OneOrMany<serde_with::Same>,
1445											>::deserialize(deserializer)?))
1446										}
1447									}
1448									match map.next_value::<DeserializeWith>() {
1449										Ok(deserialize_with) => deserialize_with.0,
1450										Err(err) => {
1451											return Err(err);
1452										}
1453									}
1454								});
1455							}
1456							Field::ItemDefectReturnLabelSource => {
1457								if r#item_defect_return_label_source_property.is_some() {
1458									return Err(<A::Error as de::Error>::duplicate_field(
1459										"itemDefectReturnLabelSource",
1460									));
1461								}
1462								r#item_defect_return_label_source_property = Some({
1463									struct DeserializeWith(
1464										Vec<ItemDefectReturnLabelSourceProperty>,
1465									);
1466									impl<'de> Deserialize<'de> for DeserializeWith {
1467										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1468										where
1469											D: Deserializer<'de>,
1470										{
1471											Ok(DeserializeWith(serde_with::As::<
1472												serde_with::OneOrMany<serde_with::Same>,
1473											>::deserialize(deserializer)?))
1474										}
1475									}
1476									match map.next_value::<DeserializeWith>() {
1477										Ok(deserialize_with) => deserialize_with.0,
1478										Err(err) => {
1479											return Err(err);
1480										}
1481									}
1482								});
1483							}
1484							Field::ItemDefectReturnShippingFeesAmount => {
1485								if r#item_defect_return_shipping_fees_amount_property.is_some() {
1486									return Err(<A::Error as de::Error>::duplicate_field(
1487										"itemDefectReturnShippingFeesAmount",
1488									));
1489								}
1490								r#item_defect_return_shipping_fees_amount_property = Some({
1491									struct DeserializeWith(
1492										Vec<ItemDefectReturnShippingFeesAmountProperty>,
1493									);
1494									impl<'de> Deserialize<'de> for DeserializeWith {
1495										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1496										where
1497											D: Deserializer<'de>,
1498										{
1499											Ok(DeserializeWith(serde_with::As::<
1500												serde_with::OneOrMany<serde_with::Same>,
1501											>::deserialize(deserializer)?))
1502										}
1503									}
1504									match map.next_value::<DeserializeWith>() {
1505										Ok(deserialize_with) => deserialize_with.0,
1506										Err(err) => {
1507											return Err(err);
1508										}
1509									}
1510								});
1511							}
1512							Field::MerchantReturnDays => {
1513								if r#merchant_return_days_property.is_some() {
1514									return Err(<A::Error as de::Error>::duplicate_field(
1515										"merchantReturnDays",
1516									));
1517								}
1518								r#merchant_return_days_property = Some({
1519									struct DeserializeWith(Vec<MerchantReturnDaysProperty>);
1520									impl<'de> Deserialize<'de> for DeserializeWith {
1521										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1522										where
1523											D: Deserializer<'de>,
1524										{
1525											Ok(DeserializeWith(serde_with::As::<
1526												serde_with::OneOrMany<serde_with::Same>,
1527											>::deserialize(deserializer)?))
1528										}
1529									}
1530									match map.next_value::<DeserializeWith>() {
1531										Ok(deserialize_with) => deserialize_with.0,
1532										Err(err) => {
1533											return Err(err);
1534										}
1535									}
1536								});
1537							}
1538							Field::MerchantReturnLink => {
1539								if r#merchant_return_link_property.is_some() {
1540									return Err(<A::Error as de::Error>::duplicate_field(
1541										"merchantReturnLink",
1542									));
1543								}
1544								r#merchant_return_link_property = Some({
1545									struct DeserializeWith(Vec<MerchantReturnLinkProperty>);
1546									impl<'de> Deserialize<'de> for DeserializeWith {
1547										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1548										where
1549											D: Deserializer<'de>,
1550										{
1551											Ok(DeserializeWith(serde_with::As::<
1552												serde_with::OneOrMany<serde_with::Same>,
1553											>::deserialize(deserializer)?))
1554										}
1555									}
1556									match map.next_value::<DeserializeWith>() {
1557										Ok(deserialize_with) => deserialize_with.0,
1558										Err(err) => {
1559											return Err(err);
1560										}
1561									}
1562								});
1563							}
1564							Field::RefundType => {
1565								if r#refund_type_property.is_some() {
1566									return Err(<A::Error as de::Error>::duplicate_field(
1567										"refundType",
1568									));
1569								}
1570								r#refund_type_property = Some({
1571									struct DeserializeWith(Vec<RefundTypeProperty>);
1572									impl<'de> Deserialize<'de> for DeserializeWith {
1573										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1574										where
1575											D: Deserializer<'de>,
1576										{
1577											Ok(DeserializeWith(serde_with::As::<
1578												serde_with::OneOrMany<serde_with::Same>,
1579											>::deserialize(deserializer)?))
1580										}
1581									}
1582									match map.next_value::<DeserializeWith>() {
1583										Ok(deserialize_with) => deserialize_with.0,
1584										Err(err) => {
1585											return Err(err);
1586										}
1587									}
1588								});
1589							}
1590							Field::RestockingFee => {
1591								if r#restocking_fee_property.is_some() {
1592									return Err(<A::Error as de::Error>::duplicate_field(
1593										"restockingFee",
1594									));
1595								}
1596								r#restocking_fee_property = Some({
1597									struct DeserializeWith(Vec<RestockingFeeProperty>);
1598									impl<'de> Deserialize<'de> for DeserializeWith {
1599										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1600										where
1601											D: Deserializer<'de>,
1602										{
1603											Ok(DeserializeWith(serde_with::As::<
1604												serde_with::OneOrMany<serde_with::Same>,
1605											>::deserialize(deserializer)?))
1606										}
1607									}
1608									match map.next_value::<DeserializeWith>() {
1609										Ok(deserialize_with) => deserialize_with.0,
1610										Err(err) => {
1611											return Err(err);
1612										}
1613									}
1614								});
1615							}
1616							Field::ReturnFees => {
1617								if r#return_fees_property.is_some() {
1618									return Err(<A::Error as de::Error>::duplicate_field(
1619										"returnFees",
1620									));
1621								}
1622								r#return_fees_property = Some({
1623									struct DeserializeWith(Vec<ReturnFeesProperty>);
1624									impl<'de> Deserialize<'de> for DeserializeWith {
1625										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1626										where
1627											D: Deserializer<'de>,
1628										{
1629											Ok(DeserializeWith(serde_with::As::<
1630												serde_with::OneOrMany<serde_with::Same>,
1631											>::deserialize(deserializer)?))
1632										}
1633									}
1634									match map.next_value::<DeserializeWith>() {
1635										Ok(deserialize_with) => deserialize_with.0,
1636										Err(err) => {
1637											return Err(err);
1638										}
1639									}
1640								});
1641							}
1642							Field::ReturnLabelSource => {
1643								if r#return_label_source_property.is_some() {
1644									return Err(<A::Error as de::Error>::duplicate_field(
1645										"returnLabelSource",
1646									));
1647								}
1648								r#return_label_source_property = Some({
1649									struct DeserializeWith(Vec<ReturnLabelSourceProperty>);
1650									impl<'de> Deserialize<'de> for DeserializeWith {
1651										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1652										where
1653											D: Deserializer<'de>,
1654										{
1655											Ok(DeserializeWith(serde_with::As::<
1656												serde_with::OneOrMany<serde_with::Same>,
1657											>::deserialize(deserializer)?))
1658										}
1659									}
1660									match map.next_value::<DeserializeWith>() {
1661										Ok(deserialize_with) => deserialize_with.0,
1662										Err(err) => {
1663											return Err(err);
1664										}
1665									}
1666								});
1667							}
1668							Field::ReturnMethod => {
1669								if r#return_method_property.is_some() {
1670									return Err(<A::Error as de::Error>::duplicate_field(
1671										"returnMethod",
1672									));
1673								}
1674								r#return_method_property = Some({
1675									struct DeserializeWith(Vec<ReturnMethodProperty>);
1676									impl<'de> Deserialize<'de> for DeserializeWith {
1677										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1678										where
1679											D: Deserializer<'de>,
1680										{
1681											Ok(DeserializeWith(serde_with::As::<
1682												serde_with::OneOrMany<serde_with::Same>,
1683											>::deserialize(deserializer)?))
1684										}
1685									}
1686									match map.next_value::<DeserializeWith>() {
1687										Ok(deserialize_with) => deserialize_with.0,
1688										Err(err) => {
1689											return Err(err);
1690										}
1691									}
1692								});
1693							}
1694							Field::ReturnPolicyCategory => {
1695								if r#return_policy_category_property.is_some() {
1696									return Err(<A::Error as de::Error>::duplicate_field(
1697										"returnPolicyCategory",
1698									));
1699								}
1700								r#return_policy_category_property = Some({
1701									struct DeserializeWith(Vec<ReturnPolicyCategoryProperty>);
1702									impl<'de> Deserialize<'de> for DeserializeWith {
1703										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1704										where
1705											D: Deserializer<'de>,
1706										{
1707											Ok(DeserializeWith(serde_with::As::<
1708												serde_with::OneOrMany<serde_with::Same>,
1709											>::deserialize(deserializer)?))
1710										}
1711									}
1712									match map.next_value::<DeserializeWith>() {
1713										Ok(deserialize_with) => deserialize_with.0,
1714										Err(err) => {
1715											return Err(err);
1716										}
1717									}
1718								});
1719							}
1720							Field::ReturnPolicyCountry => {
1721								if r#return_policy_country_property.is_some() {
1722									return Err(<A::Error as de::Error>::duplicate_field(
1723										"returnPolicyCountry",
1724									));
1725								}
1726								r#return_policy_country_property = Some({
1727									struct DeserializeWith(Vec<ReturnPolicyCountryProperty>);
1728									impl<'de> Deserialize<'de> for DeserializeWith {
1729										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1730										where
1731											D: Deserializer<'de>,
1732										{
1733											Ok(DeserializeWith(serde_with::As::<
1734												serde_with::OneOrMany<serde_with::Same>,
1735											>::deserialize(deserializer)?))
1736										}
1737									}
1738									match map.next_value::<DeserializeWith>() {
1739										Ok(deserialize_with) => deserialize_with.0,
1740										Err(err) => {
1741											return Err(err);
1742										}
1743									}
1744								});
1745							}
1746							Field::ReturnPolicySeasonalOverride => {
1747								if r#return_policy_seasonal_override_property.is_some() {
1748									return Err(<A::Error as de::Error>::duplicate_field(
1749										"returnPolicySeasonalOverride",
1750									));
1751								}
1752								r#return_policy_seasonal_override_property = Some({
1753									struct DeserializeWith(
1754										Vec<ReturnPolicySeasonalOverrideProperty>,
1755									);
1756									impl<'de> Deserialize<'de> for DeserializeWith {
1757										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1758										where
1759											D: Deserializer<'de>,
1760										{
1761											Ok(DeserializeWith(serde_with::As::<
1762												serde_with::OneOrMany<serde_with::Same>,
1763											>::deserialize(deserializer)?))
1764										}
1765									}
1766									match map.next_value::<DeserializeWith>() {
1767										Ok(deserialize_with) => deserialize_with.0,
1768										Err(err) => {
1769											return Err(err);
1770										}
1771									}
1772								});
1773							}
1774							Field::ReturnShippingFeesAmount => {
1775								if r#return_shipping_fees_amount_property.is_some() {
1776									return Err(<A::Error as de::Error>::duplicate_field(
1777										"returnShippingFeesAmount",
1778									));
1779								}
1780								r#return_shipping_fees_amount_property = Some({
1781									struct DeserializeWith(Vec<ReturnShippingFeesAmountProperty>);
1782									impl<'de> Deserialize<'de> for DeserializeWith {
1783										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1784										where
1785											D: Deserializer<'de>,
1786										{
1787											Ok(DeserializeWith(serde_with::As::<
1788												serde_with::OneOrMany<serde_with::Same>,
1789											>::deserialize(deserializer)?))
1790										}
1791									}
1792									match map.next_value::<DeserializeWith>() {
1793										Ok(deserialize_with) => deserialize_with.0,
1794										Err(err) => {
1795											return Err(err);
1796										}
1797									}
1798								});
1799							}
1800							Field::AdditionalType => {
1801								if r#additional_type_property.is_some() {
1802									return Err(<A::Error as de::Error>::duplicate_field(
1803										"additionalType",
1804									));
1805								}
1806								r#additional_type_property = Some({
1807									struct DeserializeWith(Vec<AdditionalTypeProperty>);
1808									impl<'de> Deserialize<'de> for DeserializeWith {
1809										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1810										where
1811											D: Deserializer<'de>,
1812										{
1813											Ok(DeserializeWith(serde_with::As::<
1814												serde_with::OneOrMany<serde_with::Same>,
1815											>::deserialize(deserializer)?))
1816										}
1817									}
1818									match map.next_value::<DeserializeWith>() {
1819										Ok(deserialize_with) => deserialize_with.0,
1820										Err(err) => {
1821											return Err(err);
1822										}
1823									}
1824								});
1825							}
1826							Field::AlternateName => {
1827								if r#alternate_name_property.is_some() {
1828									return Err(<A::Error as de::Error>::duplicate_field(
1829										"alternateName",
1830									));
1831								}
1832								r#alternate_name_property = Some({
1833									struct DeserializeWith(Vec<AlternateNameProperty>);
1834									impl<'de> Deserialize<'de> for DeserializeWith {
1835										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1836										where
1837											D: Deserializer<'de>,
1838										{
1839											Ok(DeserializeWith(serde_with::As::<
1840												serde_with::OneOrMany<serde_with::Same>,
1841											>::deserialize(deserializer)?))
1842										}
1843									}
1844									match map.next_value::<DeserializeWith>() {
1845										Ok(deserialize_with) => deserialize_with.0,
1846										Err(err) => {
1847											return Err(err);
1848										}
1849									}
1850								});
1851							}
1852							Field::Description => {
1853								if r#description_property.is_some() {
1854									return Err(<A::Error as de::Error>::duplicate_field(
1855										"description",
1856									));
1857								}
1858								r#description_property = Some({
1859									struct DeserializeWith(Vec<DescriptionProperty>);
1860									impl<'de> Deserialize<'de> for DeserializeWith {
1861										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1862										where
1863											D: Deserializer<'de>,
1864										{
1865											Ok(DeserializeWith(serde_with::As::<
1866												serde_with::OneOrMany<serde_with::Same>,
1867											>::deserialize(deserializer)?))
1868										}
1869									}
1870									match map.next_value::<DeserializeWith>() {
1871										Ok(deserialize_with) => deserialize_with.0,
1872										Err(err) => {
1873											return Err(err);
1874										}
1875									}
1876								});
1877							}
1878							Field::DisambiguatingDescription => {
1879								if r#disambiguating_description_property.is_some() {
1880									return Err(<A::Error as de::Error>::duplicate_field(
1881										"disambiguatingDescription",
1882									));
1883								}
1884								r#disambiguating_description_property = Some({
1885									struct DeserializeWith(Vec<DisambiguatingDescriptionProperty>);
1886									impl<'de> Deserialize<'de> for DeserializeWith {
1887										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1888										where
1889											D: Deserializer<'de>,
1890										{
1891											Ok(DeserializeWith(serde_with::As::<
1892												serde_with::OneOrMany<serde_with::Same>,
1893											>::deserialize(deserializer)?))
1894										}
1895									}
1896									match map.next_value::<DeserializeWith>() {
1897										Ok(deserialize_with) => deserialize_with.0,
1898										Err(err) => {
1899											return Err(err);
1900										}
1901									}
1902								});
1903							}
1904							Field::Identifier => {
1905								if r#identifier_property.is_some() {
1906									return Err(<A::Error as de::Error>::duplicate_field(
1907										"identifier",
1908									));
1909								}
1910								r#identifier_property = Some({
1911									struct DeserializeWith(Vec<IdentifierProperty>);
1912									impl<'de> Deserialize<'de> for DeserializeWith {
1913										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1914										where
1915											D: Deserializer<'de>,
1916										{
1917											Ok(DeserializeWith(serde_with::As::<
1918												serde_with::OneOrMany<serde_with::Same>,
1919											>::deserialize(deserializer)?))
1920										}
1921									}
1922									match map.next_value::<DeserializeWith>() {
1923										Ok(deserialize_with) => deserialize_with.0,
1924										Err(err) => {
1925											return Err(err);
1926										}
1927									}
1928								});
1929							}
1930							Field::Image => {
1931								if r#image_property.is_some() {
1932									return Err(<A::Error as de::Error>::duplicate_field("image"));
1933								}
1934								r#image_property = Some({
1935									struct DeserializeWith(Vec<ImageProperty>);
1936									impl<'de> Deserialize<'de> for DeserializeWith {
1937										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1938										where
1939											D: Deserializer<'de>,
1940										{
1941											Ok(DeserializeWith(serde_with::As::<
1942												serde_with::OneOrMany<serde_with::Same>,
1943											>::deserialize(deserializer)?))
1944										}
1945									}
1946									match map.next_value::<DeserializeWith>() {
1947										Ok(deserialize_with) => deserialize_with.0,
1948										Err(err) => {
1949											return Err(err);
1950										}
1951									}
1952								});
1953							}
1954							Field::MainEntityOfPage => {
1955								if r#main_entity_of_page_property.is_some() {
1956									return Err(<A::Error as de::Error>::duplicate_field(
1957										"mainEntityOfPage",
1958									));
1959								}
1960								r#main_entity_of_page_property = Some({
1961									struct DeserializeWith(Vec<MainEntityOfPageProperty>);
1962									impl<'de> Deserialize<'de> for DeserializeWith {
1963										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1964										where
1965											D: Deserializer<'de>,
1966										{
1967											Ok(DeserializeWith(serde_with::As::<
1968												serde_with::OneOrMany<serde_with::Same>,
1969											>::deserialize(deserializer)?))
1970										}
1971									}
1972									match map.next_value::<DeserializeWith>() {
1973										Ok(deserialize_with) => deserialize_with.0,
1974										Err(err) => {
1975											return Err(err);
1976										}
1977									}
1978								});
1979							}
1980							Field::Name => {
1981								if r#name_property.is_some() {
1982									return Err(<A::Error as de::Error>::duplicate_field("name"));
1983								}
1984								r#name_property = Some({
1985									struct DeserializeWith(Vec<NameProperty>);
1986									impl<'de> Deserialize<'de> for DeserializeWith {
1987										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1988										where
1989											D: Deserializer<'de>,
1990										{
1991											Ok(DeserializeWith(serde_with::As::<
1992												serde_with::OneOrMany<serde_with::Same>,
1993											>::deserialize(deserializer)?))
1994										}
1995									}
1996									match map.next_value::<DeserializeWith>() {
1997										Ok(deserialize_with) => deserialize_with.0,
1998										Err(err) => {
1999											return Err(err);
2000										}
2001									}
2002								});
2003							}
2004							Field::PotentialAction => {
2005								if r#potential_action_property.is_some() {
2006									return Err(<A::Error as de::Error>::duplicate_field(
2007										"potentialAction",
2008									));
2009								}
2010								r#potential_action_property = Some({
2011									struct DeserializeWith(Vec<PotentialActionProperty>);
2012									impl<'de> Deserialize<'de> for DeserializeWith {
2013										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2014										where
2015											D: Deserializer<'de>,
2016										{
2017											Ok(DeserializeWith(serde_with::As::<
2018												serde_with::OneOrMany<serde_with::Same>,
2019											>::deserialize(deserializer)?))
2020										}
2021									}
2022									match map.next_value::<DeserializeWith>() {
2023										Ok(deserialize_with) => deserialize_with.0,
2024										Err(err) => {
2025											return Err(err);
2026										}
2027									}
2028								});
2029							}
2030							Field::SameAs => {
2031								if r#same_as_property.is_some() {
2032									return Err(<A::Error as de::Error>::duplicate_field("sameAs"));
2033								}
2034								r#same_as_property = Some({
2035									struct DeserializeWith(Vec<SameAsProperty>);
2036									impl<'de> Deserialize<'de> for DeserializeWith {
2037										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2038										where
2039											D: Deserializer<'de>,
2040										{
2041											Ok(DeserializeWith(serde_with::As::<
2042												serde_with::OneOrMany<serde_with::Same>,
2043											>::deserialize(deserializer)?))
2044										}
2045									}
2046									match map.next_value::<DeserializeWith>() {
2047										Ok(deserialize_with) => deserialize_with.0,
2048										Err(err) => {
2049											return Err(err);
2050										}
2051									}
2052								});
2053							}
2054							Field::SubjectOf => {
2055								if r#subject_of_property.is_some() {
2056									return Err(<A::Error as de::Error>::duplicate_field(
2057										"subjectOf",
2058									));
2059								}
2060								r#subject_of_property = Some({
2061									struct DeserializeWith(Vec<SubjectOfProperty>);
2062									impl<'de> Deserialize<'de> for DeserializeWith {
2063										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2064										where
2065											D: Deserializer<'de>,
2066										{
2067											Ok(DeserializeWith(serde_with::As::<
2068												serde_with::OneOrMany<serde_with::Same>,
2069											>::deserialize(deserializer)?))
2070										}
2071									}
2072									match map.next_value::<DeserializeWith>() {
2073										Ok(deserialize_with) => deserialize_with.0,
2074										Err(err) => {
2075											return Err(err);
2076										}
2077									}
2078								});
2079							}
2080							Field::Url => {
2081								if r#url_property.is_some() {
2082									return Err(<A::Error as de::Error>::duplicate_field("url"));
2083								}
2084								r#url_property = Some({
2085									struct DeserializeWith(Vec<UrlProperty>);
2086									impl<'de> Deserialize<'de> for DeserializeWith {
2087										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2088										where
2089											D: Deserializer<'de>,
2090										{
2091											Ok(DeserializeWith(serde_with::As::<
2092												serde_with::OneOrMany<serde_with::Same>,
2093											>::deserialize(deserializer)?))
2094										}
2095									}
2096									match map.next_value::<DeserializeWith>() {
2097										Ok(deserialize_with) => deserialize_with.0,
2098										Err(err) => {
2099											return Err(err);
2100										}
2101									}
2102								});
2103							}
2104							Field::Ignore => {
2105								let _ = map.next_value::<de::IgnoredAny>()?;
2106							}
2107						}
2108					}
2109					Ok(MerchantReturnPolicy {
2110						r#additional_property: r#additional_property_property.unwrap_or_default(),
2111						r#applicable_country: r#applicable_country_property.unwrap_or_default(),
2112						r#customer_remorse_return_fees: r#customer_remorse_return_fees_property
2113							.unwrap_or_default(),
2114						r#customer_remorse_return_label_source:
2115							r#customer_remorse_return_label_source_property.unwrap_or_default(),
2116						r#customer_remorse_return_shipping_fees_amount:
2117							r#customer_remorse_return_shipping_fees_amount_property
2118								.unwrap_or_default(),
2119						r#in_store_returns_offered: r#in_store_returns_offered_property
2120							.unwrap_or_default(),
2121						r#item_condition: r#item_condition_property.unwrap_or_default(),
2122						r#item_defect_return_fees: r#item_defect_return_fees_property
2123							.unwrap_or_default(),
2124						r#item_defect_return_label_source:
2125							r#item_defect_return_label_source_property.unwrap_or_default(),
2126						r#item_defect_return_shipping_fees_amount:
2127							r#item_defect_return_shipping_fees_amount_property.unwrap_or_default(),
2128						r#merchant_return_days: r#merchant_return_days_property.unwrap_or_default(),
2129						r#merchant_return_link: r#merchant_return_link_property.unwrap_or_default(),
2130						r#refund_type: r#refund_type_property.unwrap_or_default(),
2131						r#restocking_fee: r#restocking_fee_property.unwrap_or_default(),
2132						r#return_fees: r#return_fees_property.unwrap_or_default(),
2133						r#return_label_source: r#return_label_source_property.unwrap_or_default(),
2134						r#return_method: r#return_method_property.unwrap_or_default(),
2135						r#return_policy_category: r#return_policy_category_property
2136							.unwrap_or_default(),
2137						r#return_policy_country: r#return_policy_country_property
2138							.unwrap_or_default(),
2139						r#return_policy_seasonal_override:
2140							r#return_policy_seasonal_override_property.unwrap_or_default(),
2141						r#return_shipping_fees_amount: r#return_shipping_fees_amount_property
2142							.unwrap_or_default(),
2143						r#additional_type: r#additional_type_property.unwrap_or_default(),
2144						r#alternate_name: r#alternate_name_property.unwrap_or_default(),
2145						r#description: r#description_property.unwrap_or_default(),
2146						r#disambiguating_description: r#disambiguating_description_property
2147							.unwrap_or_default(),
2148						r#identifier: r#identifier_property.unwrap_or_default(),
2149						r#image: r#image_property.unwrap_or_default(),
2150						r#main_entity_of_page: r#main_entity_of_page_property.unwrap_or_default(),
2151						r#name: r#name_property.unwrap_or_default(),
2152						r#potential_action: r#potential_action_property.unwrap_or_default(),
2153						r#same_as: r#same_as_property.unwrap_or_default(),
2154						r#subject_of: r#subject_of_property.unwrap_or_default(),
2155						r#url: r#url_property.unwrap_or_default(),
2156					})
2157				}
2158			}
2159			const FIELDS: &[&str] = &[
2160				"additionalProperty",
2161				"applicableCountry",
2162				"customerRemorseReturnFees",
2163				"customerRemorseReturnLabelSource",
2164				"customerRemorseReturnShippingFeesAmount",
2165				"inStoreReturnsOffered",
2166				"itemCondition",
2167				"itemDefectReturnFees",
2168				"itemDefectReturnLabelSource",
2169				"itemDefectReturnShippingFeesAmount",
2170				"merchantReturnDays",
2171				"merchantReturnLink",
2172				"refundType",
2173				"restockingFee",
2174				"returnFees",
2175				"returnLabelSource",
2176				"returnMethod",
2177				"returnPolicyCategory",
2178				"returnPolicyCountry",
2179				"returnPolicySeasonalOverride",
2180				"returnShippingFeesAmount",
2181				"additionalType",
2182				"alternateName",
2183				"description",
2184				"disambiguatingDescription",
2185				"identifier",
2186				"image",
2187				"mainEntityOfPage",
2188				"name",
2189				"potentialAction",
2190				"sameAs",
2191				"subjectOf",
2192				"url",
2193			];
2194			deserializer.deserialize_struct("MerchantReturnPolicy", FIELDS, ClassVisitor)
2195		}
2196	}
2197}