schema_org_types/schemas/classes/
bank_account.rs

1use super::*;
2/// <https://schema.org/BankAccount>
3#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct BankAccount {
6	/// <https://schema.org/accountMinimumInflow>
7	pub r#account_minimum_inflow: Vec<AccountMinimumInflowProperty>,
8	/// <https://schema.org/accountOverdraftLimit>
9	pub r#account_overdraft_limit: Vec<AccountOverdraftLimitProperty>,
10	/// <https://schema.org/bankAccountType>
11	pub r#bank_account_type: Vec<BankAccountTypeProperty>,
12	/// <https://schema.org/annualPercentageRate>
13	pub r#annual_percentage_rate: Vec<AnnualPercentageRateProperty>,
14	/// <https://schema.org/feesAndCommissionsSpecification>
15	pub r#fees_and_commissions_specification: Vec<FeesAndCommissionsSpecificationProperty>,
16	/// <https://schema.org/interestRate>
17	pub r#interest_rate: Vec<InterestRateProperty>,
18	/// <https://schema.org/aggregateRating>
19	pub r#aggregate_rating: Vec<AggregateRatingProperty>,
20	/// <https://schema.org/areaServed>
21	pub r#area_served: Vec<AreaServedProperty>,
22	/// <https://schema.org/audience>
23	pub r#audience: Vec<AudienceProperty>,
24	/// <https://schema.org/availableChannel>
25	pub r#available_channel: Vec<AvailableChannelProperty>,
26	/// <https://schema.org/award>
27	pub r#award: Vec<AwardProperty>,
28	/// <https://schema.org/brand>
29	pub r#brand: Vec<BrandProperty>,
30	/// <https://schema.org/broker>
31	pub r#broker: Vec<BrokerProperty>,
32	/// <https://schema.org/category>
33	pub r#category: Vec<CategoryProperty>,
34	/// <https://schema.org/hasOfferCatalog>
35	pub r#has_offer_catalog: Vec<HasOfferCatalogProperty>,
36	/// <https://schema.org/hoursAvailable>
37	pub r#hours_available: Vec<HoursAvailableProperty>,
38	/// <https://schema.org/isRelatedTo>
39	pub r#is_related_to: Vec<IsRelatedToProperty>,
40	/// <https://schema.org/isSimilarTo>
41	pub r#is_similar_to: Vec<IsSimilarToProperty>,
42	/// <https://schema.org/logo>
43	pub r#logo: Vec<LogoProperty>,
44	/// <https://schema.org/offers>
45	pub r#offers: Vec<OffersProperty>,
46	/// <https://schema.org/produces>
47	#[deprecated = "This schema is superseded by <https://schema.org/serviceOutput>."]
48	pub r#produces: Vec<ProducesProperty>,
49	/// <https://schema.org/provider>
50	pub r#provider: Vec<ProviderProperty>,
51	/// <https://schema.org/providerMobility>
52	pub r#provider_mobility: Vec<ProviderMobilityProperty>,
53	/// <https://schema.org/review>
54	pub r#review: Vec<ReviewProperty>,
55	/// <https://schema.org/serviceArea>
56	#[deprecated = "This schema is superseded by <https://schema.org/areaServed>."]
57	pub r#service_area: Vec<ServiceAreaProperty>,
58	/// <https://schema.org/serviceAudience>
59	#[deprecated = "This schema is superseded by <https://schema.org/audience>."]
60	pub r#service_audience: Vec<ServiceAudienceProperty>,
61	/// <https://schema.org/serviceOutput>
62	pub r#service_output: Vec<ServiceOutputProperty>,
63	/// <https://schema.org/serviceType>
64	pub r#service_type: Vec<ServiceTypeProperty>,
65	/// <https://schema.org/slogan>
66	pub r#slogan: Vec<SloganProperty>,
67	/// <https://schema.org/termsOfService>
68	pub r#terms_of_service: Vec<TermsOfServiceProperty>,
69	/// <https://schema.org/additionalType>
70	pub r#additional_type: Vec<AdditionalTypeProperty>,
71	/// <https://schema.org/alternateName>
72	pub r#alternate_name: Vec<AlternateNameProperty>,
73	/// <https://schema.org/description>
74	pub r#description: Vec<DescriptionProperty>,
75	/// <https://schema.org/disambiguatingDescription>
76	pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
77	/// <https://schema.org/identifier>
78	pub r#identifier: Vec<IdentifierProperty>,
79	/// <https://schema.org/image>
80	pub r#image: Vec<ImageProperty>,
81	/// <https://schema.org/mainEntityOfPage>
82	pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
83	/// <https://schema.org/name>
84	pub r#name: Vec<NameProperty>,
85	/// <https://schema.org/potentialAction>
86	pub r#potential_action: Vec<PotentialActionProperty>,
87	/// <https://schema.org/sameAs>
88	pub r#same_as: Vec<SameAsProperty>,
89	/// <https://schema.org/subjectOf>
90	pub r#subject_of: Vec<SubjectOfProperty>,
91	/// <https://schema.org/url>
92	pub r#url: Vec<UrlProperty>,
93}
94/// This trait is for properties from <https://schema.org/BankAccount>.
95pub trait BankAccountTrait {
96	/// Get <https://schema.org/accountMinimumInflow> from [`Self`] as borrowed slice.
97	fn get_account_minimum_inflow(&self) -> &[AccountMinimumInflowProperty];
98	/// Take <https://schema.org/accountMinimumInflow> from [`Self`] as owned vector.
99	fn take_account_minimum_inflow(&mut self) -> Vec<AccountMinimumInflowProperty>;
100	/// Get <https://schema.org/accountOverdraftLimit> from [`Self`] as borrowed slice.
101	fn get_account_overdraft_limit(&self) -> &[AccountOverdraftLimitProperty];
102	/// Take <https://schema.org/accountOverdraftLimit> from [`Self`] as owned vector.
103	fn take_account_overdraft_limit(&mut self) -> Vec<AccountOverdraftLimitProperty>;
104	/// Get <https://schema.org/bankAccountType> from [`Self`] as borrowed slice.
105	fn get_bank_account_type(&self) -> &[BankAccountTypeProperty];
106	/// Take <https://schema.org/bankAccountType> from [`Self`] as owned vector.
107	fn take_bank_account_type(&mut self) -> Vec<BankAccountTypeProperty>;
108}
109impl BankAccountTrait for BankAccount {
110	fn get_account_minimum_inflow(&self) -> &[AccountMinimumInflowProperty] {
111		self.r#account_minimum_inflow.as_slice()
112	}
113	fn take_account_minimum_inflow(&mut self) -> Vec<AccountMinimumInflowProperty> {
114		std::mem::take(&mut self.r#account_minimum_inflow)
115	}
116	fn get_account_overdraft_limit(&self) -> &[AccountOverdraftLimitProperty] {
117		self.r#account_overdraft_limit.as_slice()
118	}
119	fn take_account_overdraft_limit(&mut self) -> Vec<AccountOverdraftLimitProperty> {
120		std::mem::take(&mut self.r#account_overdraft_limit)
121	}
122	fn get_bank_account_type(&self) -> &[BankAccountTypeProperty] {
123		self.r#bank_account_type.as_slice()
124	}
125	fn take_bank_account_type(&mut self) -> Vec<BankAccountTypeProperty> {
126		std::mem::take(&mut self.r#bank_account_type)
127	}
128}
129impl FinancialProductTrait for BankAccount {
130	fn get_annual_percentage_rate(&self) -> &[AnnualPercentageRateProperty] {
131		self.r#annual_percentage_rate.as_slice()
132	}
133	fn take_annual_percentage_rate(&mut self) -> Vec<AnnualPercentageRateProperty> {
134		std::mem::take(&mut self.r#annual_percentage_rate)
135	}
136	fn get_fees_and_commissions_specification(&self) -> &[FeesAndCommissionsSpecificationProperty] {
137		self.r#fees_and_commissions_specification.as_slice()
138	}
139	fn take_fees_and_commissions_specification(
140		&mut self,
141	) -> Vec<FeesAndCommissionsSpecificationProperty> {
142		std::mem::take(&mut self.r#fees_and_commissions_specification)
143	}
144	fn get_interest_rate(&self) -> &[InterestRateProperty] {
145		self.r#interest_rate.as_slice()
146	}
147	fn take_interest_rate(&mut self) -> Vec<InterestRateProperty> {
148		std::mem::take(&mut self.r#interest_rate)
149	}
150}
151impl ServiceTrait for BankAccount {
152	fn get_aggregate_rating(&self) -> &[AggregateRatingProperty] {
153		self.r#aggregate_rating.as_slice()
154	}
155	fn take_aggregate_rating(&mut self) -> Vec<AggregateRatingProperty> {
156		std::mem::take(&mut self.r#aggregate_rating)
157	}
158	fn get_area_served(&self) -> &[AreaServedProperty] {
159		self.r#area_served.as_slice()
160	}
161	fn take_area_served(&mut self) -> Vec<AreaServedProperty> {
162		std::mem::take(&mut self.r#area_served)
163	}
164	fn get_audience(&self) -> &[AudienceProperty] {
165		self.r#audience.as_slice()
166	}
167	fn take_audience(&mut self) -> Vec<AudienceProperty> {
168		std::mem::take(&mut self.r#audience)
169	}
170	fn get_available_channel(&self) -> &[AvailableChannelProperty] {
171		self.r#available_channel.as_slice()
172	}
173	fn take_available_channel(&mut self) -> Vec<AvailableChannelProperty> {
174		std::mem::take(&mut self.r#available_channel)
175	}
176	fn get_award(&self) -> &[AwardProperty] {
177		self.r#award.as_slice()
178	}
179	fn take_award(&mut self) -> Vec<AwardProperty> {
180		std::mem::take(&mut self.r#award)
181	}
182	fn get_brand(&self) -> &[BrandProperty] {
183		self.r#brand.as_slice()
184	}
185	fn take_brand(&mut self) -> Vec<BrandProperty> {
186		std::mem::take(&mut self.r#brand)
187	}
188	fn get_broker(&self) -> &[BrokerProperty] {
189		self.r#broker.as_slice()
190	}
191	fn take_broker(&mut self) -> Vec<BrokerProperty> {
192		std::mem::take(&mut self.r#broker)
193	}
194	fn get_category(&self) -> &[CategoryProperty] {
195		self.r#category.as_slice()
196	}
197	fn take_category(&mut self) -> Vec<CategoryProperty> {
198		std::mem::take(&mut self.r#category)
199	}
200	fn get_has_offer_catalog(&self) -> &[HasOfferCatalogProperty] {
201		self.r#has_offer_catalog.as_slice()
202	}
203	fn take_has_offer_catalog(&mut self) -> Vec<HasOfferCatalogProperty> {
204		std::mem::take(&mut self.r#has_offer_catalog)
205	}
206	fn get_hours_available(&self) -> &[HoursAvailableProperty] {
207		self.r#hours_available.as_slice()
208	}
209	fn take_hours_available(&mut self) -> Vec<HoursAvailableProperty> {
210		std::mem::take(&mut self.r#hours_available)
211	}
212	fn get_is_related_to(&self) -> &[IsRelatedToProperty] {
213		self.r#is_related_to.as_slice()
214	}
215	fn take_is_related_to(&mut self) -> Vec<IsRelatedToProperty> {
216		std::mem::take(&mut self.r#is_related_to)
217	}
218	fn get_is_similar_to(&self) -> &[IsSimilarToProperty] {
219		self.r#is_similar_to.as_slice()
220	}
221	fn take_is_similar_to(&mut self) -> Vec<IsSimilarToProperty> {
222		std::mem::take(&mut self.r#is_similar_to)
223	}
224	fn get_logo(&self) -> &[LogoProperty] {
225		self.r#logo.as_slice()
226	}
227	fn take_logo(&mut self) -> Vec<LogoProperty> {
228		std::mem::take(&mut self.r#logo)
229	}
230	fn get_offers(&self) -> &[OffersProperty] {
231		self.r#offers.as_slice()
232	}
233	fn take_offers(&mut self) -> Vec<OffersProperty> {
234		std::mem::take(&mut self.r#offers)
235	}
236	fn get_produces(&self) -> &[ProducesProperty] {
237		self.r#produces.as_slice()
238	}
239	fn take_produces(&mut self) -> Vec<ProducesProperty> {
240		std::mem::take(&mut self.r#produces)
241	}
242	fn get_provider(&self) -> &[ProviderProperty] {
243		self.r#provider.as_slice()
244	}
245	fn take_provider(&mut self) -> Vec<ProviderProperty> {
246		std::mem::take(&mut self.r#provider)
247	}
248	fn get_provider_mobility(&self) -> &[ProviderMobilityProperty] {
249		self.r#provider_mobility.as_slice()
250	}
251	fn take_provider_mobility(&mut self) -> Vec<ProviderMobilityProperty> {
252		std::mem::take(&mut self.r#provider_mobility)
253	}
254	fn get_review(&self) -> &[ReviewProperty] {
255		self.r#review.as_slice()
256	}
257	fn take_review(&mut self) -> Vec<ReviewProperty> {
258		std::mem::take(&mut self.r#review)
259	}
260	fn get_service_area(&self) -> &[ServiceAreaProperty] {
261		self.r#service_area.as_slice()
262	}
263	fn take_service_area(&mut self) -> Vec<ServiceAreaProperty> {
264		std::mem::take(&mut self.r#service_area)
265	}
266	fn get_service_audience(&self) -> &[ServiceAudienceProperty] {
267		self.r#service_audience.as_slice()
268	}
269	fn take_service_audience(&mut self) -> Vec<ServiceAudienceProperty> {
270		std::mem::take(&mut self.r#service_audience)
271	}
272	fn get_service_output(&self) -> &[ServiceOutputProperty] {
273		self.r#service_output.as_slice()
274	}
275	fn take_service_output(&mut self) -> Vec<ServiceOutputProperty> {
276		std::mem::take(&mut self.r#service_output)
277	}
278	fn get_service_type(&self) -> &[ServiceTypeProperty] {
279		self.r#service_type.as_slice()
280	}
281	fn take_service_type(&mut self) -> Vec<ServiceTypeProperty> {
282		std::mem::take(&mut self.r#service_type)
283	}
284	fn get_slogan(&self) -> &[SloganProperty] {
285		self.r#slogan.as_slice()
286	}
287	fn take_slogan(&mut self) -> Vec<SloganProperty> {
288		std::mem::take(&mut self.r#slogan)
289	}
290	fn get_terms_of_service(&self) -> &[TermsOfServiceProperty] {
291		self.r#terms_of_service.as_slice()
292	}
293	fn take_terms_of_service(&mut self) -> Vec<TermsOfServiceProperty> {
294		std::mem::take(&mut self.r#terms_of_service)
295	}
296}
297impl ThingTrait for BankAccount {
298	fn get_additional_type(&self) -> &[AdditionalTypeProperty] {
299		self.r#additional_type.as_slice()
300	}
301	fn take_additional_type(&mut self) -> Vec<AdditionalTypeProperty> {
302		std::mem::take(&mut self.r#additional_type)
303	}
304	fn get_alternate_name(&self) -> &[AlternateNameProperty] {
305		self.r#alternate_name.as_slice()
306	}
307	fn take_alternate_name(&mut self) -> Vec<AlternateNameProperty> {
308		std::mem::take(&mut self.r#alternate_name)
309	}
310	fn get_description(&self) -> &[DescriptionProperty] {
311		self.r#description.as_slice()
312	}
313	fn take_description(&mut self) -> Vec<DescriptionProperty> {
314		std::mem::take(&mut self.r#description)
315	}
316	fn get_disambiguating_description(&self) -> &[DisambiguatingDescriptionProperty] {
317		self.r#disambiguating_description.as_slice()
318	}
319	fn take_disambiguating_description(&mut self) -> Vec<DisambiguatingDescriptionProperty> {
320		std::mem::take(&mut self.r#disambiguating_description)
321	}
322	fn get_identifier(&self) -> &[IdentifierProperty] {
323		self.r#identifier.as_slice()
324	}
325	fn take_identifier(&mut self) -> Vec<IdentifierProperty> {
326		std::mem::take(&mut self.r#identifier)
327	}
328	fn get_image(&self) -> &[ImageProperty] {
329		self.r#image.as_slice()
330	}
331	fn take_image(&mut self) -> Vec<ImageProperty> {
332		std::mem::take(&mut self.r#image)
333	}
334	fn get_main_entity_of_page(&self) -> &[MainEntityOfPageProperty] {
335		self.r#main_entity_of_page.as_slice()
336	}
337	fn take_main_entity_of_page(&mut self) -> Vec<MainEntityOfPageProperty> {
338		std::mem::take(&mut self.r#main_entity_of_page)
339	}
340	fn get_name(&self) -> &[NameProperty] {
341		self.r#name.as_slice()
342	}
343	fn take_name(&mut self) -> Vec<NameProperty> {
344		std::mem::take(&mut self.r#name)
345	}
346	fn get_potential_action(&self) -> &[PotentialActionProperty] {
347		self.r#potential_action.as_slice()
348	}
349	fn take_potential_action(&mut self) -> Vec<PotentialActionProperty> {
350		std::mem::take(&mut self.r#potential_action)
351	}
352	fn get_same_as(&self) -> &[SameAsProperty] {
353		self.r#same_as.as_slice()
354	}
355	fn take_same_as(&mut self) -> Vec<SameAsProperty> {
356		std::mem::take(&mut self.r#same_as)
357	}
358	fn get_subject_of(&self) -> &[SubjectOfProperty] {
359		self.r#subject_of.as_slice()
360	}
361	fn take_subject_of(&mut self) -> Vec<SubjectOfProperty> {
362		std::mem::take(&mut self.r#subject_of)
363	}
364	fn get_url(&self) -> &[UrlProperty] {
365		self.r#url.as_slice()
366	}
367	fn take_url(&mut self) -> Vec<UrlProperty> {
368		std::mem::take(&mut self.r#url)
369	}
370}
371#[cfg(feature = "serde")]
372mod serde {
373	use std::{fmt, fmt::Formatter};
374
375	use ::serde::{
376		de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
377	};
378
379	use super::*;
380	impl Serialize for BankAccount {
381		fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
382		where
383			S: Serializer,
384		{
385			let len: usize = [
386				!Vec::is_empty(&self.r#account_minimum_inflow) as usize,
387				!Vec::is_empty(&self.r#account_overdraft_limit) as usize,
388				!Vec::is_empty(&self.r#bank_account_type) as usize,
389				!Vec::is_empty(&self.r#annual_percentage_rate) as usize,
390				!Vec::is_empty(&self.r#fees_and_commissions_specification) as usize,
391				!Vec::is_empty(&self.r#interest_rate) as usize,
392				!Vec::is_empty(&self.r#aggregate_rating) as usize,
393				!Vec::is_empty(&self.r#area_served) as usize,
394				!Vec::is_empty(&self.r#audience) as usize,
395				!Vec::is_empty(&self.r#available_channel) as usize,
396				!Vec::is_empty(&self.r#award) as usize,
397				!Vec::is_empty(&self.r#brand) as usize,
398				!Vec::is_empty(&self.r#broker) as usize,
399				!Vec::is_empty(&self.r#category) as usize,
400				!Vec::is_empty(&self.r#has_offer_catalog) as usize,
401				!Vec::is_empty(&self.r#hours_available) as usize,
402				!Vec::is_empty(&self.r#is_related_to) as usize,
403				!Vec::is_empty(&self.r#is_similar_to) as usize,
404				!Vec::is_empty(&self.r#logo) as usize,
405				!Vec::is_empty(&self.r#offers) as usize,
406				!Vec::is_empty(&self.r#produces) as usize,
407				!Vec::is_empty(&self.r#provider) as usize,
408				!Vec::is_empty(&self.r#provider_mobility) as usize,
409				!Vec::is_empty(&self.r#review) as usize,
410				!Vec::is_empty(&self.r#service_area) as usize,
411				!Vec::is_empty(&self.r#service_audience) as usize,
412				!Vec::is_empty(&self.r#service_output) as usize,
413				!Vec::is_empty(&self.r#service_type) as usize,
414				!Vec::is_empty(&self.r#slogan) as usize,
415				!Vec::is_empty(&self.r#terms_of_service) as usize,
416				!Vec::is_empty(&self.r#additional_type) as usize,
417				!Vec::is_empty(&self.r#alternate_name) as usize,
418				!Vec::is_empty(&self.r#description) as usize,
419				!Vec::is_empty(&self.r#disambiguating_description) as usize,
420				!Vec::is_empty(&self.r#identifier) as usize,
421				!Vec::is_empty(&self.r#image) as usize,
422				!Vec::is_empty(&self.r#main_entity_of_page) as usize,
423				!Vec::is_empty(&self.r#name) as usize,
424				!Vec::is_empty(&self.r#potential_action) as usize,
425				!Vec::is_empty(&self.r#same_as) as usize,
426				!Vec::is_empty(&self.r#subject_of) as usize,
427				!Vec::is_empty(&self.r#url) as usize,
428			]
429			.iter()
430			.sum();
431			let mut serialize_struct =
432				Serializer::serialize_struct(serializer, "BankAccount", len)?;
433			if !Vec::is_empty(&self.r#account_minimum_inflow) {
434				serialize_struct.serialize_field("accountMinimumInflow", {
435					struct SerializeWith<'a>(&'a Vec<AccountMinimumInflowProperty>);
436					impl<'a> Serialize for SerializeWith<'a> {
437						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
438						where
439							S: Serializer,
440						{
441							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
442								self.0, serializer,
443							)
444						}
445					}
446					&SerializeWith(&self.r#account_minimum_inflow)
447				})?;
448			} else {
449				serialize_struct.skip_field("accountMinimumInflow")?;
450			}
451			if !Vec::is_empty(&self.r#account_overdraft_limit) {
452				serialize_struct.serialize_field("accountOverdraftLimit", {
453					struct SerializeWith<'a>(&'a Vec<AccountOverdraftLimitProperty>);
454					impl<'a> Serialize for SerializeWith<'a> {
455						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
456						where
457							S: Serializer,
458						{
459							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
460								self.0, serializer,
461							)
462						}
463					}
464					&SerializeWith(&self.r#account_overdraft_limit)
465				})?;
466			} else {
467				serialize_struct.skip_field("accountOverdraftLimit")?;
468			}
469			if !Vec::is_empty(&self.r#bank_account_type) {
470				serialize_struct.serialize_field("bankAccountType", {
471					struct SerializeWith<'a>(&'a Vec<BankAccountTypeProperty>);
472					impl<'a> Serialize for SerializeWith<'a> {
473						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
474						where
475							S: Serializer,
476						{
477							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
478								self.0, serializer,
479							)
480						}
481					}
482					&SerializeWith(&self.r#bank_account_type)
483				})?;
484			} else {
485				serialize_struct.skip_field("bankAccountType")?;
486			}
487			if !Vec::is_empty(&self.r#annual_percentage_rate) {
488				serialize_struct.serialize_field("annualPercentageRate", {
489					struct SerializeWith<'a>(&'a Vec<AnnualPercentageRateProperty>);
490					impl<'a> Serialize for SerializeWith<'a> {
491						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
492						where
493							S: Serializer,
494						{
495							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
496								self.0, serializer,
497							)
498						}
499					}
500					&SerializeWith(&self.r#annual_percentage_rate)
501				})?;
502			} else {
503				serialize_struct.skip_field("annualPercentageRate")?;
504			}
505			if !Vec::is_empty(&self.r#fees_and_commissions_specification) {
506				serialize_struct.serialize_field("feesAndCommissionsSpecification", {
507					struct SerializeWith<'a>(&'a Vec<FeesAndCommissionsSpecificationProperty>);
508					impl<'a> Serialize for SerializeWith<'a> {
509						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
510						where
511							S: Serializer,
512						{
513							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
514								self.0, serializer,
515							)
516						}
517					}
518					&SerializeWith(&self.r#fees_and_commissions_specification)
519				})?;
520			} else {
521				serialize_struct.skip_field("feesAndCommissionsSpecification")?;
522			}
523			if !Vec::is_empty(&self.r#interest_rate) {
524				serialize_struct.serialize_field("interestRate", {
525					struct SerializeWith<'a>(&'a Vec<InterestRateProperty>);
526					impl<'a> Serialize for SerializeWith<'a> {
527						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
528						where
529							S: Serializer,
530						{
531							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
532								self.0, serializer,
533							)
534						}
535					}
536					&SerializeWith(&self.r#interest_rate)
537				})?;
538			} else {
539				serialize_struct.skip_field("interestRate")?;
540			}
541			if !Vec::is_empty(&self.r#aggregate_rating) {
542				serialize_struct.serialize_field("aggregateRating", {
543					struct SerializeWith<'a>(&'a Vec<AggregateRatingProperty>);
544					impl<'a> Serialize for SerializeWith<'a> {
545						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
546						where
547							S: Serializer,
548						{
549							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
550								self.0, serializer,
551							)
552						}
553					}
554					&SerializeWith(&self.r#aggregate_rating)
555				})?;
556			} else {
557				serialize_struct.skip_field("aggregateRating")?;
558			}
559			if !Vec::is_empty(&self.r#area_served) {
560				serialize_struct.serialize_field("areaServed", {
561					struct SerializeWith<'a>(&'a Vec<AreaServedProperty>);
562					impl<'a> Serialize for SerializeWith<'a> {
563						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
564						where
565							S: Serializer,
566						{
567							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
568								self.0, serializer,
569							)
570						}
571					}
572					&SerializeWith(&self.r#area_served)
573				})?;
574			} else {
575				serialize_struct.skip_field("areaServed")?;
576			}
577			if !Vec::is_empty(&self.r#audience) {
578				serialize_struct.serialize_field("audience", {
579					struct SerializeWith<'a>(&'a Vec<AudienceProperty>);
580					impl<'a> Serialize for SerializeWith<'a> {
581						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
582						where
583							S: Serializer,
584						{
585							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
586								self.0, serializer,
587							)
588						}
589					}
590					&SerializeWith(&self.r#audience)
591				})?;
592			} else {
593				serialize_struct.skip_field("audience")?;
594			}
595			if !Vec::is_empty(&self.r#available_channel) {
596				serialize_struct.serialize_field("availableChannel", {
597					struct SerializeWith<'a>(&'a Vec<AvailableChannelProperty>);
598					impl<'a> Serialize for SerializeWith<'a> {
599						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
600						where
601							S: Serializer,
602						{
603							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
604								self.0, serializer,
605							)
606						}
607					}
608					&SerializeWith(&self.r#available_channel)
609				})?;
610			} else {
611				serialize_struct.skip_field("availableChannel")?;
612			}
613			if !Vec::is_empty(&self.r#award) {
614				serialize_struct.serialize_field("award", {
615					struct SerializeWith<'a>(&'a Vec<AwardProperty>);
616					impl<'a> Serialize for SerializeWith<'a> {
617						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
618						where
619							S: Serializer,
620						{
621							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
622								self.0, serializer,
623							)
624						}
625					}
626					&SerializeWith(&self.r#award)
627				})?;
628			} else {
629				serialize_struct.skip_field("award")?;
630			}
631			if !Vec::is_empty(&self.r#brand) {
632				serialize_struct.serialize_field("brand", {
633					struct SerializeWith<'a>(&'a Vec<BrandProperty>);
634					impl<'a> Serialize for SerializeWith<'a> {
635						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
636						where
637							S: Serializer,
638						{
639							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
640								self.0, serializer,
641							)
642						}
643					}
644					&SerializeWith(&self.r#brand)
645				})?;
646			} else {
647				serialize_struct.skip_field("brand")?;
648			}
649			if !Vec::is_empty(&self.r#broker) {
650				serialize_struct.serialize_field("broker", {
651					struct SerializeWith<'a>(&'a Vec<BrokerProperty>);
652					impl<'a> Serialize for SerializeWith<'a> {
653						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
654						where
655							S: Serializer,
656						{
657							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
658								self.0, serializer,
659							)
660						}
661					}
662					&SerializeWith(&self.r#broker)
663				})?;
664			} else {
665				serialize_struct.skip_field("broker")?;
666			}
667			if !Vec::is_empty(&self.r#category) {
668				serialize_struct.serialize_field("category", {
669					struct SerializeWith<'a>(&'a Vec<CategoryProperty>);
670					impl<'a> Serialize for SerializeWith<'a> {
671						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
672						where
673							S: Serializer,
674						{
675							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
676								self.0, serializer,
677							)
678						}
679					}
680					&SerializeWith(&self.r#category)
681				})?;
682			} else {
683				serialize_struct.skip_field("category")?;
684			}
685			if !Vec::is_empty(&self.r#has_offer_catalog) {
686				serialize_struct.serialize_field("hasOfferCatalog", {
687					struct SerializeWith<'a>(&'a Vec<HasOfferCatalogProperty>);
688					impl<'a> Serialize for SerializeWith<'a> {
689						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
690						where
691							S: Serializer,
692						{
693							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
694								self.0, serializer,
695							)
696						}
697					}
698					&SerializeWith(&self.r#has_offer_catalog)
699				})?;
700			} else {
701				serialize_struct.skip_field("hasOfferCatalog")?;
702			}
703			if !Vec::is_empty(&self.r#hours_available) {
704				serialize_struct.serialize_field("hoursAvailable", {
705					struct SerializeWith<'a>(&'a Vec<HoursAvailableProperty>);
706					impl<'a> Serialize for SerializeWith<'a> {
707						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
708						where
709							S: Serializer,
710						{
711							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
712								self.0, serializer,
713							)
714						}
715					}
716					&SerializeWith(&self.r#hours_available)
717				})?;
718			} else {
719				serialize_struct.skip_field("hoursAvailable")?;
720			}
721			if !Vec::is_empty(&self.r#is_related_to) {
722				serialize_struct.serialize_field("isRelatedTo", {
723					struct SerializeWith<'a>(&'a Vec<IsRelatedToProperty>);
724					impl<'a> Serialize for SerializeWith<'a> {
725						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
726						where
727							S: Serializer,
728						{
729							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
730								self.0, serializer,
731							)
732						}
733					}
734					&SerializeWith(&self.r#is_related_to)
735				})?;
736			} else {
737				serialize_struct.skip_field("isRelatedTo")?;
738			}
739			if !Vec::is_empty(&self.r#is_similar_to) {
740				serialize_struct.serialize_field("isSimilarTo", {
741					struct SerializeWith<'a>(&'a Vec<IsSimilarToProperty>);
742					impl<'a> Serialize for SerializeWith<'a> {
743						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
744						where
745							S: Serializer,
746						{
747							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
748								self.0, serializer,
749							)
750						}
751					}
752					&SerializeWith(&self.r#is_similar_to)
753				})?;
754			} else {
755				serialize_struct.skip_field("isSimilarTo")?;
756			}
757			if !Vec::is_empty(&self.r#logo) {
758				serialize_struct.serialize_field("logo", {
759					struct SerializeWith<'a>(&'a Vec<LogoProperty>);
760					impl<'a> Serialize for SerializeWith<'a> {
761						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
762						where
763							S: Serializer,
764						{
765							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
766								self.0, serializer,
767							)
768						}
769					}
770					&SerializeWith(&self.r#logo)
771				})?;
772			} else {
773				serialize_struct.skip_field("logo")?;
774			}
775			if !Vec::is_empty(&self.r#offers) {
776				serialize_struct.serialize_field("offers", {
777					struct SerializeWith<'a>(&'a Vec<OffersProperty>);
778					impl<'a> Serialize for SerializeWith<'a> {
779						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
780						where
781							S: Serializer,
782						{
783							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
784								self.0, serializer,
785							)
786						}
787					}
788					&SerializeWith(&self.r#offers)
789				})?;
790			} else {
791				serialize_struct.skip_field("offers")?;
792			}
793			if !Vec::is_empty(&self.r#produces) {
794				serialize_struct.serialize_field("produces", {
795					struct SerializeWith<'a>(&'a Vec<ProducesProperty>);
796					impl<'a> Serialize for SerializeWith<'a> {
797						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
798						where
799							S: Serializer,
800						{
801							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
802								self.0, serializer,
803							)
804						}
805					}
806					&SerializeWith(&self.r#produces)
807				})?;
808			} else {
809				serialize_struct.skip_field("produces")?;
810			}
811			if !Vec::is_empty(&self.r#provider) {
812				serialize_struct.serialize_field("provider", {
813					struct SerializeWith<'a>(&'a Vec<ProviderProperty>);
814					impl<'a> Serialize for SerializeWith<'a> {
815						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
816						where
817							S: Serializer,
818						{
819							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
820								self.0, serializer,
821							)
822						}
823					}
824					&SerializeWith(&self.r#provider)
825				})?;
826			} else {
827				serialize_struct.skip_field("provider")?;
828			}
829			if !Vec::is_empty(&self.r#provider_mobility) {
830				serialize_struct.serialize_field("providerMobility", {
831					struct SerializeWith<'a>(&'a Vec<ProviderMobilityProperty>);
832					impl<'a> Serialize for SerializeWith<'a> {
833						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
834						where
835							S: Serializer,
836						{
837							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
838								self.0, serializer,
839							)
840						}
841					}
842					&SerializeWith(&self.r#provider_mobility)
843				})?;
844			} else {
845				serialize_struct.skip_field("providerMobility")?;
846			}
847			if !Vec::is_empty(&self.r#review) {
848				serialize_struct.serialize_field("review", {
849					struct SerializeWith<'a>(&'a Vec<ReviewProperty>);
850					impl<'a> Serialize for SerializeWith<'a> {
851						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
852						where
853							S: Serializer,
854						{
855							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
856								self.0, serializer,
857							)
858						}
859					}
860					&SerializeWith(&self.r#review)
861				})?;
862			} else {
863				serialize_struct.skip_field("review")?;
864			}
865			if !Vec::is_empty(&self.r#service_area) {
866				serialize_struct.serialize_field("serviceArea", {
867					struct SerializeWith<'a>(&'a Vec<ServiceAreaProperty>);
868					impl<'a> Serialize for SerializeWith<'a> {
869						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
870						where
871							S: Serializer,
872						{
873							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
874								self.0, serializer,
875							)
876						}
877					}
878					&SerializeWith(&self.r#service_area)
879				})?;
880			} else {
881				serialize_struct.skip_field("serviceArea")?;
882			}
883			if !Vec::is_empty(&self.r#service_audience) {
884				serialize_struct.serialize_field("serviceAudience", {
885					struct SerializeWith<'a>(&'a Vec<ServiceAudienceProperty>);
886					impl<'a> Serialize for SerializeWith<'a> {
887						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
888						where
889							S: Serializer,
890						{
891							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
892								self.0, serializer,
893							)
894						}
895					}
896					&SerializeWith(&self.r#service_audience)
897				})?;
898			} else {
899				serialize_struct.skip_field("serviceAudience")?;
900			}
901			if !Vec::is_empty(&self.r#service_output) {
902				serialize_struct.serialize_field("serviceOutput", {
903					struct SerializeWith<'a>(&'a Vec<ServiceOutputProperty>);
904					impl<'a> Serialize for SerializeWith<'a> {
905						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
906						where
907							S: Serializer,
908						{
909							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
910								self.0, serializer,
911							)
912						}
913					}
914					&SerializeWith(&self.r#service_output)
915				})?;
916			} else {
917				serialize_struct.skip_field("serviceOutput")?;
918			}
919			if !Vec::is_empty(&self.r#service_type) {
920				serialize_struct.serialize_field("serviceType", {
921					struct SerializeWith<'a>(&'a Vec<ServiceTypeProperty>);
922					impl<'a> Serialize for SerializeWith<'a> {
923						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
924						where
925							S: Serializer,
926						{
927							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
928								self.0, serializer,
929							)
930						}
931					}
932					&SerializeWith(&self.r#service_type)
933				})?;
934			} else {
935				serialize_struct.skip_field("serviceType")?;
936			}
937			if !Vec::is_empty(&self.r#slogan) {
938				serialize_struct.serialize_field("slogan", {
939					struct SerializeWith<'a>(&'a Vec<SloganProperty>);
940					impl<'a> Serialize for SerializeWith<'a> {
941						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
942						where
943							S: Serializer,
944						{
945							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
946								self.0, serializer,
947							)
948						}
949					}
950					&SerializeWith(&self.r#slogan)
951				})?;
952			} else {
953				serialize_struct.skip_field("slogan")?;
954			}
955			if !Vec::is_empty(&self.r#terms_of_service) {
956				serialize_struct.serialize_field("termsOfService", {
957					struct SerializeWith<'a>(&'a Vec<TermsOfServiceProperty>);
958					impl<'a> Serialize for SerializeWith<'a> {
959						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
960						where
961							S: Serializer,
962						{
963							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
964								self.0, serializer,
965							)
966						}
967					}
968					&SerializeWith(&self.r#terms_of_service)
969				})?;
970			} else {
971				serialize_struct.skip_field("termsOfService")?;
972			}
973			if !Vec::is_empty(&self.r#additional_type) {
974				serialize_struct.serialize_field("additionalType", {
975					struct SerializeWith<'a>(&'a Vec<AdditionalTypeProperty>);
976					impl<'a> Serialize for SerializeWith<'a> {
977						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
978						where
979							S: Serializer,
980						{
981							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
982								self.0, serializer,
983							)
984						}
985					}
986					&SerializeWith(&self.r#additional_type)
987				})?;
988			} else {
989				serialize_struct.skip_field("additionalType")?;
990			}
991			if !Vec::is_empty(&self.r#alternate_name) {
992				serialize_struct.serialize_field("alternateName", {
993					struct SerializeWith<'a>(&'a Vec<AlternateNameProperty>);
994					impl<'a> Serialize for SerializeWith<'a> {
995						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
996						where
997							S: Serializer,
998						{
999							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1000								self.0, serializer,
1001							)
1002						}
1003					}
1004					&SerializeWith(&self.r#alternate_name)
1005				})?;
1006			} else {
1007				serialize_struct.skip_field("alternateName")?;
1008			}
1009			if !Vec::is_empty(&self.r#description) {
1010				serialize_struct.serialize_field("description", {
1011					struct SerializeWith<'a>(&'a Vec<DescriptionProperty>);
1012					impl<'a> Serialize for SerializeWith<'a> {
1013						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1014						where
1015							S: Serializer,
1016						{
1017							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1018								self.0, serializer,
1019							)
1020						}
1021					}
1022					&SerializeWith(&self.r#description)
1023				})?;
1024			} else {
1025				serialize_struct.skip_field("description")?;
1026			}
1027			if !Vec::is_empty(&self.r#disambiguating_description) {
1028				serialize_struct.serialize_field("disambiguatingDescription", {
1029					struct SerializeWith<'a>(&'a Vec<DisambiguatingDescriptionProperty>);
1030					impl<'a> Serialize for SerializeWith<'a> {
1031						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1032						where
1033							S: Serializer,
1034						{
1035							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1036								self.0, serializer,
1037							)
1038						}
1039					}
1040					&SerializeWith(&self.r#disambiguating_description)
1041				})?;
1042			} else {
1043				serialize_struct.skip_field("disambiguatingDescription")?;
1044			}
1045			if !Vec::is_empty(&self.r#identifier) {
1046				serialize_struct.serialize_field("identifier", {
1047					struct SerializeWith<'a>(&'a Vec<IdentifierProperty>);
1048					impl<'a> Serialize for SerializeWith<'a> {
1049						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1050						where
1051							S: Serializer,
1052						{
1053							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1054								self.0, serializer,
1055							)
1056						}
1057					}
1058					&SerializeWith(&self.r#identifier)
1059				})?;
1060			} else {
1061				serialize_struct.skip_field("identifier")?;
1062			}
1063			if !Vec::is_empty(&self.r#image) {
1064				serialize_struct.serialize_field("image", {
1065					struct SerializeWith<'a>(&'a Vec<ImageProperty>);
1066					impl<'a> Serialize for SerializeWith<'a> {
1067						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1068						where
1069							S: Serializer,
1070						{
1071							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1072								self.0, serializer,
1073							)
1074						}
1075					}
1076					&SerializeWith(&self.r#image)
1077				})?;
1078			} else {
1079				serialize_struct.skip_field("image")?;
1080			}
1081			if !Vec::is_empty(&self.r#main_entity_of_page) {
1082				serialize_struct.serialize_field("mainEntityOfPage", {
1083					struct SerializeWith<'a>(&'a Vec<MainEntityOfPageProperty>);
1084					impl<'a> Serialize for SerializeWith<'a> {
1085						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1086						where
1087							S: Serializer,
1088						{
1089							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1090								self.0, serializer,
1091							)
1092						}
1093					}
1094					&SerializeWith(&self.r#main_entity_of_page)
1095				})?;
1096			} else {
1097				serialize_struct.skip_field("mainEntityOfPage")?;
1098			}
1099			if !Vec::is_empty(&self.r#name) {
1100				serialize_struct.serialize_field("name", {
1101					struct SerializeWith<'a>(&'a Vec<NameProperty>);
1102					impl<'a> Serialize for SerializeWith<'a> {
1103						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1104						where
1105							S: Serializer,
1106						{
1107							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1108								self.0, serializer,
1109							)
1110						}
1111					}
1112					&SerializeWith(&self.r#name)
1113				})?;
1114			} else {
1115				serialize_struct.skip_field("name")?;
1116			}
1117			if !Vec::is_empty(&self.r#potential_action) {
1118				serialize_struct.serialize_field("potentialAction", {
1119					struct SerializeWith<'a>(&'a Vec<PotentialActionProperty>);
1120					impl<'a> Serialize for SerializeWith<'a> {
1121						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1122						where
1123							S: Serializer,
1124						{
1125							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1126								self.0, serializer,
1127							)
1128						}
1129					}
1130					&SerializeWith(&self.r#potential_action)
1131				})?;
1132			} else {
1133				serialize_struct.skip_field("potentialAction")?;
1134			}
1135			if !Vec::is_empty(&self.r#same_as) {
1136				serialize_struct.serialize_field("sameAs", {
1137					struct SerializeWith<'a>(&'a Vec<SameAsProperty>);
1138					impl<'a> Serialize for SerializeWith<'a> {
1139						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1140						where
1141							S: Serializer,
1142						{
1143							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1144								self.0, serializer,
1145							)
1146						}
1147					}
1148					&SerializeWith(&self.r#same_as)
1149				})?;
1150			} else {
1151				serialize_struct.skip_field("sameAs")?;
1152			}
1153			if !Vec::is_empty(&self.r#subject_of) {
1154				serialize_struct.serialize_field("subjectOf", {
1155					struct SerializeWith<'a>(&'a Vec<SubjectOfProperty>);
1156					impl<'a> Serialize for SerializeWith<'a> {
1157						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1158						where
1159							S: Serializer,
1160						{
1161							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1162								self.0, serializer,
1163							)
1164						}
1165					}
1166					&SerializeWith(&self.r#subject_of)
1167				})?;
1168			} else {
1169				serialize_struct.skip_field("subjectOf")?;
1170			}
1171			if !Vec::is_empty(&self.r#url) {
1172				serialize_struct.serialize_field("url", {
1173					struct SerializeWith<'a>(&'a Vec<UrlProperty>);
1174					impl<'a> Serialize for SerializeWith<'a> {
1175						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
1176						where
1177							S: Serializer,
1178						{
1179							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
1180								self.0, serializer,
1181							)
1182						}
1183					}
1184					&SerializeWith(&self.r#url)
1185				})?;
1186			} else {
1187				serialize_struct.skip_field("url")?;
1188			}
1189			serialize_struct.end()
1190		}
1191	}
1192	impl<'de> Deserialize<'de> for BankAccount {
1193		fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1194		where
1195			D: Deserializer<'de>,
1196		{
1197			enum Field {
1198				AccountMinimumInflow,
1199				AccountOverdraftLimit,
1200				BankAccountType,
1201				AnnualPercentageRate,
1202				FeesAndCommissionsSpecification,
1203				InterestRate,
1204				AggregateRating,
1205				AreaServed,
1206				Audience,
1207				AvailableChannel,
1208				Award,
1209				Brand,
1210				Broker,
1211				Category,
1212				HasOfferCatalog,
1213				HoursAvailable,
1214				IsRelatedTo,
1215				IsSimilarTo,
1216				Logo,
1217				Offers,
1218				Produces,
1219				Provider,
1220				ProviderMobility,
1221				Review,
1222				ServiceArea,
1223				ServiceAudience,
1224				ServiceOutput,
1225				ServiceType,
1226				Slogan,
1227				TermsOfService,
1228				AdditionalType,
1229				AlternateName,
1230				Description,
1231				DisambiguatingDescription,
1232				Identifier,
1233				Image,
1234				MainEntityOfPage,
1235				Name,
1236				PotentialAction,
1237				SameAs,
1238				SubjectOf,
1239				Url,
1240				Ignore,
1241			}
1242			struct FieldVisitor;
1243			impl<'de> Visitor<'de> for FieldVisitor {
1244				type Value = Field;
1245				fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
1246					formatter.write_str("field identifier")
1247				}
1248				fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
1249				where
1250					E: de::Error,
1251				{
1252					match value {
1253						"accountMinimumInflow" => Ok(Field::AccountMinimumInflow),
1254						"accountOverdraftLimit" => Ok(Field::AccountOverdraftLimit),
1255						"bankAccountType" => Ok(Field::BankAccountType),
1256						"annualPercentageRate" => Ok(Field::AnnualPercentageRate),
1257						"feesAndCommissionsSpecification" => {
1258							Ok(Field::FeesAndCommissionsSpecification)
1259						}
1260						"interestRate" => Ok(Field::InterestRate),
1261						"aggregateRating" => Ok(Field::AggregateRating),
1262						"areaServed" => Ok(Field::AreaServed),
1263						"audience" => Ok(Field::Audience),
1264						"availableChannel" => Ok(Field::AvailableChannel),
1265						"award" => Ok(Field::Award),
1266						"brand" => Ok(Field::Brand),
1267						"broker" => Ok(Field::Broker),
1268						"category" => Ok(Field::Category),
1269						"hasOfferCatalog" => Ok(Field::HasOfferCatalog),
1270						"hoursAvailable" => Ok(Field::HoursAvailable),
1271						"isRelatedTo" => Ok(Field::IsRelatedTo),
1272						"isSimilarTo" => Ok(Field::IsSimilarTo),
1273						"logo" => Ok(Field::Logo),
1274						"offers" => Ok(Field::Offers),
1275						"produces" => Ok(Field::Produces),
1276						"provider" => Ok(Field::Provider),
1277						"providerMobility" => Ok(Field::ProviderMobility),
1278						"review" => Ok(Field::Review),
1279						"serviceArea" => Ok(Field::ServiceArea),
1280						"serviceAudience" => Ok(Field::ServiceAudience),
1281						"serviceOutput" => Ok(Field::ServiceOutput),
1282						"serviceType" => Ok(Field::ServiceType),
1283						"slogan" => Ok(Field::Slogan),
1284						"termsOfService" => Ok(Field::TermsOfService),
1285						"additionalType" => Ok(Field::AdditionalType),
1286						"alternateName" => Ok(Field::AlternateName),
1287						"description" => Ok(Field::Description),
1288						"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
1289						"identifier" => Ok(Field::Identifier),
1290						"image" => Ok(Field::Image),
1291						"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
1292						"name" => Ok(Field::Name),
1293						"potentialAction" => Ok(Field::PotentialAction),
1294						"sameAs" => Ok(Field::SameAs),
1295						"subjectOf" => Ok(Field::SubjectOf),
1296						"url" => Ok(Field::Url),
1297						"id" | "type" => Ok(Field::Ignore),
1298						_ => Err(de::Error::unknown_field(value, FIELDS)),
1299					}
1300				}
1301				fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
1302				where
1303					E: de::Error,
1304				{
1305					match value {
1306						b"accountMinimumInflow" => Ok(Field::AccountMinimumInflow),
1307						b"accountOverdraftLimit" => Ok(Field::AccountOverdraftLimit),
1308						b"bankAccountType" => Ok(Field::BankAccountType),
1309						b"annualPercentageRate" => Ok(Field::AnnualPercentageRate),
1310						b"feesAndCommissionsSpecification" => {
1311							Ok(Field::FeesAndCommissionsSpecification)
1312						}
1313						b"interestRate" => Ok(Field::InterestRate),
1314						b"aggregateRating" => Ok(Field::AggregateRating),
1315						b"areaServed" => Ok(Field::AreaServed),
1316						b"audience" => Ok(Field::Audience),
1317						b"availableChannel" => Ok(Field::AvailableChannel),
1318						b"award" => Ok(Field::Award),
1319						b"brand" => Ok(Field::Brand),
1320						b"broker" => Ok(Field::Broker),
1321						b"category" => Ok(Field::Category),
1322						b"hasOfferCatalog" => Ok(Field::HasOfferCatalog),
1323						b"hoursAvailable" => Ok(Field::HoursAvailable),
1324						b"isRelatedTo" => Ok(Field::IsRelatedTo),
1325						b"isSimilarTo" => Ok(Field::IsSimilarTo),
1326						b"logo" => Ok(Field::Logo),
1327						b"offers" => Ok(Field::Offers),
1328						b"produces" => Ok(Field::Produces),
1329						b"provider" => Ok(Field::Provider),
1330						b"providerMobility" => Ok(Field::ProviderMobility),
1331						b"review" => Ok(Field::Review),
1332						b"serviceArea" => Ok(Field::ServiceArea),
1333						b"serviceAudience" => Ok(Field::ServiceAudience),
1334						b"serviceOutput" => Ok(Field::ServiceOutput),
1335						b"serviceType" => Ok(Field::ServiceType),
1336						b"slogan" => Ok(Field::Slogan),
1337						b"termsOfService" => Ok(Field::TermsOfService),
1338						b"additionalType" => Ok(Field::AdditionalType),
1339						b"alternateName" => Ok(Field::AlternateName),
1340						b"description" => Ok(Field::Description),
1341						b"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
1342						b"identifier" => Ok(Field::Identifier),
1343						b"image" => Ok(Field::Image),
1344						b"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
1345						b"name" => Ok(Field::Name),
1346						b"potentialAction" => Ok(Field::PotentialAction),
1347						b"sameAs" => Ok(Field::SameAs),
1348						b"subjectOf" => Ok(Field::SubjectOf),
1349						b"url" => Ok(Field::Url),
1350						b"id" | b"type" => Ok(Field::Ignore),
1351						_ => {
1352							let value = &String::from_utf8_lossy(value);
1353							Err(de::Error::unknown_field(value, FIELDS))
1354						}
1355					}
1356				}
1357			}
1358			impl<'de> Deserialize<'de> for Field {
1359				fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1360				where
1361					D: Deserializer<'de>,
1362				{
1363					deserializer.deserialize_identifier(FieldVisitor)
1364				}
1365			}
1366			struct ClassVisitor;
1367			impl<'de> Visitor<'de> for ClassVisitor {
1368				type Value = BankAccount;
1369				fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
1370					formatter.write_str("schema.org schema BankAccount")
1371				}
1372				fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
1373				where
1374					A: de::MapAccess<'de>,
1375				{
1376					let mut r#account_minimum_inflow_property = None;
1377					let mut r#account_overdraft_limit_property = None;
1378					let mut r#bank_account_type_property = None;
1379					let mut r#annual_percentage_rate_property = None;
1380					let mut r#fees_and_commissions_specification_property = None;
1381					let mut r#interest_rate_property = None;
1382					let mut r#aggregate_rating_property = None;
1383					let mut r#area_served_property = None;
1384					let mut r#audience_property = None;
1385					let mut r#available_channel_property = None;
1386					let mut r#award_property = None;
1387					let mut r#brand_property = None;
1388					let mut r#broker_property = None;
1389					let mut r#category_property = None;
1390					let mut r#has_offer_catalog_property = None;
1391					let mut r#hours_available_property = None;
1392					let mut r#is_related_to_property = None;
1393					let mut r#is_similar_to_property = None;
1394					let mut r#logo_property = None;
1395					let mut r#offers_property = None;
1396					let mut r#produces_property = None;
1397					let mut r#provider_property = None;
1398					let mut r#provider_mobility_property = None;
1399					let mut r#review_property = None;
1400					let mut r#service_area_property = None;
1401					let mut r#service_audience_property = None;
1402					let mut r#service_output_property = None;
1403					let mut r#service_type_property = None;
1404					let mut r#slogan_property = None;
1405					let mut r#terms_of_service_property = None;
1406					let mut r#additional_type_property = None;
1407					let mut r#alternate_name_property = None;
1408					let mut r#description_property = None;
1409					let mut r#disambiguating_description_property = None;
1410					let mut r#identifier_property = None;
1411					let mut r#image_property = None;
1412					let mut r#main_entity_of_page_property = None;
1413					let mut r#name_property = None;
1414					let mut r#potential_action_property = None;
1415					let mut r#same_as_property = None;
1416					let mut r#subject_of_property = None;
1417					let mut r#url_property = None;
1418					while let Some(key) = map.next_key::<Field>()? {
1419						match key {
1420							Field::AccountMinimumInflow => {
1421								if r#account_minimum_inflow_property.is_some() {
1422									return Err(<A::Error as de::Error>::duplicate_field(
1423										"accountMinimumInflow",
1424									));
1425								}
1426								r#account_minimum_inflow_property = Some({
1427									struct DeserializeWith(Vec<AccountMinimumInflowProperty>);
1428									impl<'de> Deserialize<'de> for DeserializeWith {
1429										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1430										where
1431											D: Deserializer<'de>,
1432										{
1433											Ok(DeserializeWith(serde_with::As::<
1434												serde_with::OneOrMany<serde_with::Same>,
1435											>::deserialize(deserializer)?))
1436										}
1437									}
1438									match map.next_value::<DeserializeWith>() {
1439										Ok(deserialize_with) => deserialize_with.0,
1440										Err(err) => {
1441											return Err(err);
1442										}
1443									}
1444								});
1445							}
1446							Field::AccountOverdraftLimit => {
1447								if r#account_overdraft_limit_property.is_some() {
1448									return Err(<A::Error as de::Error>::duplicate_field(
1449										"accountOverdraftLimit",
1450									));
1451								}
1452								r#account_overdraft_limit_property = Some({
1453									struct DeserializeWith(Vec<AccountOverdraftLimitProperty>);
1454									impl<'de> Deserialize<'de> for DeserializeWith {
1455										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1456										where
1457											D: Deserializer<'de>,
1458										{
1459											Ok(DeserializeWith(serde_with::As::<
1460												serde_with::OneOrMany<serde_with::Same>,
1461											>::deserialize(deserializer)?))
1462										}
1463									}
1464									match map.next_value::<DeserializeWith>() {
1465										Ok(deserialize_with) => deserialize_with.0,
1466										Err(err) => {
1467											return Err(err);
1468										}
1469									}
1470								});
1471							}
1472							Field::BankAccountType => {
1473								if r#bank_account_type_property.is_some() {
1474									return Err(<A::Error as de::Error>::duplicate_field(
1475										"bankAccountType",
1476									));
1477								}
1478								r#bank_account_type_property = Some({
1479									struct DeserializeWith(Vec<BankAccountTypeProperty>);
1480									impl<'de> Deserialize<'de> for DeserializeWith {
1481										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1482										where
1483											D: Deserializer<'de>,
1484										{
1485											Ok(DeserializeWith(serde_with::As::<
1486												serde_with::OneOrMany<serde_with::Same>,
1487											>::deserialize(deserializer)?))
1488										}
1489									}
1490									match map.next_value::<DeserializeWith>() {
1491										Ok(deserialize_with) => deserialize_with.0,
1492										Err(err) => {
1493											return Err(err);
1494										}
1495									}
1496								});
1497							}
1498							Field::AnnualPercentageRate => {
1499								if r#annual_percentage_rate_property.is_some() {
1500									return Err(<A::Error as de::Error>::duplicate_field(
1501										"annualPercentageRate",
1502									));
1503								}
1504								r#annual_percentage_rate_property = Some({
1505									struct DeserializeWith(Vec<AnnualPercentageRateProperty>);
1506									impl<'de> Deserialize<'de> for DeserializeWith {
1507										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1508										where
1509											D: Deserializer<'de>,
1510										{
1511											Ok(DeserializeWith(serde_with::As::<
1512												serde_with::OneOrMany<serde_with::Same>,
1513											>::deserialize(deserializer)?))
1514										}
1515									}
1516									match map.next_value::<DeserializeWith>() {
1517										Ok(deserialize_with) => deserialize_with.0,
1518										Err(err) => {
1519											return Err(err);
1520										}
1521									}
1522								});
1523							}
1524							Field::FeesAndCommissionsSpecification => {
1525								if r#fees_and_commissions_specification_property.is_some() {
1526									return Err(<A::Error as de::Error>::duplicate_field(
1527										"feesAndCommissionsSpecification",
1528									));
1529								}
1530								r#fees_and_commissions_specification_property = Some({
1531									struct DeserializeWith(
1532										Vec<FeesAndCommissionsSpecificationProperty>,
1533									);
1534									impl<'de> Deserialize<'de> for DeserializeWith {
1535										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1536										where
1537											D: Deserializer<'de>,
1538										{
1539											Ok(DeserializeWith(serde_with::As::<
1540												serde_with::OneOrMany<serde_with::Same>,
1541											>::deserialize(deserializer)?))
1542										}
1543									}
1544									match map.next_value::<DeserializeWith>() {
1545										Ok(deserialize_with) => deserialize_with.0,
1546										Err(err) => {
1547											return Err(err);
1548										}
1549									}
1550								});
1551							}
1552							Field::InterestRate => {
1553								if r#interest_rate_property.is_some() {
1554									return Err(<A::Error as de::Error>::duplicate_field(
1555										"interestRate",
1556									));
1557								}
1558								r#interest_rate_property = Some({
1559									struct DeserializeWith(Vec<InterestRateProperty>);
1560									impl<'de> Deserialize<'de> for DeserializeWith {
1561										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1562										where
1563											D: Deserializer<'de>,
1564										{
1565											Ok(DeserializeWith(serde_with::As::<
1566												serde_with::OneOrMany<serde_with::Same>,
1567											>::deserialize(deserializer)?))
1568										}
1569									}
1570									match map.next_value::<DeserializeWith>() {
1571										Ok(deserialize_with) => deserialize_with.0,
1572										Err(err) => {
1573											return Err(err);
1574										}
1575									}
1576								});
1577							}
1578							Field::AggregateRating => {
1579								if r#aggregate_rating_property.is_some() {
1580									return Err(<A::Error as de::Error>::duplicate_field(
1581										"aggregateRating",
1582									));
1583								}
1584								r#aggregate_rating_property = Some({
1585									struct DeserializeWith(Vec<AggregateRatingProperty>);
1586									impl<'de> Deserialize<'de> for DeserializeWith {
1587										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1588										where
1589											D: Deserializer<'de>,
1590										{
1591											Ok(DeserializeWith(serde_with::As::<
1592												serde_with::OneOrMany<serde_with::Same>,
1593											>::deserialize(deserializer)?))
1594										}
1595									}
1596									match map.next_value::<DeserializeWith>() {
1597										Ok(deserialize_with) => deserialize_with.0,
1598										Err(err) => {
1599											return Err(err);
1600										}
1601									}
1602								});
1603							}
1604							Field::AreaServed => {
1605								if r#area_served_property.is_some() {
1606									return Err(<A::Error as de::Error>::duplicate_field(
1607										"areaServed",
1608									));
1609								}
1610								r#area_served_property = Some({
1611									struct DeserializeWith(Vec<AreaServedProperty>);
1612									impl<'de> Deserialize<'de> for DeserializeWith {
1613										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1614										where
1615											D: Deserializer<'de>,
1616										{
1617											Ok(DeserializeWith(serde_with::As::<
1618												serde_with::OneOrMany<serde_with::Same>,
1619											>::deserialize(deserializer)?))
1620										}
1621									}
1622									match map.next_value::<DeserializeWith>() {
1623										Ok(deserialize_with) => deserialize_with.0,
1624										Err(err) => {
1625											return Err(err);
1626										}
1627									}
1628								});
1629							}
1630							Field::Audience => {
1631								if r#audience_property.is_some() {
1632									return Err(<A::Error as de::Error>::duplicate_field(
1633										"audience",
1634									));
1635								}
1636								r#audience_property = Some({
1637									struct DeserializeWith(Vec<AudienceProperty>);
1638									impl<'de> Deserialize<'de> for DeserializeWith {
1639										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1640										where
1641											D: Deserializer<'de>,
1642										{
1643											Ok(DeserializeWith(serde_with::As::<
1644												serde_with::OneOrMany<serde_with::Same>,
1645											>::deserialize(deserializer)?))
1646										}
1647									}
1648									match map.next_value::<DeserializeWith>() {
1649										Ok(deserialize_with) => deserialize_with.0,
1650										Err(err) => {
1651											return Err(err);
1652										}
1653									}
1654								});
1655							}
1656							Field::AvailableChannel => {
1657								if r#available_channel_property.is_some() {
1658									return Err(<A::Error as de::Error>::duplicate_field(
1659										"availableChannel",
1660									));
1661								}
1662								r#available_channel_property = Some({
1663									struct DeserializeWith(Vec<AvailableChannelProperty>);
1664									impl<'de> Deserialize<'de> for DeserializeWith {
1665										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1666										where
1667											D: Deserializer<'de>,
1668										{
1669											Ok(DeserializeWith(serde_with::As::<
1670												serde_with::OneOrMany<serde_with::Same>,
1671											>::deserialize(deserializer)?))
1672										}
1673									}
1674									match map.next_value::<DeserializeWith>() {
1675										Ok(deserialize_with) => deserialize_with.0,
1676										Err(err) => {
1677											return Err(err);
1678										}
1679									}
1680								});
1681							}
1682							Field::Award => {
1683								if r#award_property.is_some() {
1684									return Err(<A::Error as de::Error>::duplicate_field("award"));
1685								}
1686								r#award_property = Some({
1687									struct DeserializeWith(Vec<AwardProperty>);
1688									impl<'de> Deserialize<'de> for DeserializeWith {
1689										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1690										where
1691											D: Deserializer<'de>,
1692										{
1693											Ok(DeserializeWith(serde_with::As::<
1694												serde_with::OneOrMany<serde_with::Same>,
1695											>::deserialize(deserializer)?))
1696										}
1697									}
1698									match map.next_value::<DeserializeWith>() {
1699										Ok(deserialize_with) => deserialize_with.0,
1700										Err(err) => {
1701											return Err(err);
1702										}
1703									}
1704								});
1705							}
1706							Field::Brand => {
1707								if r#brand_property.is_some() {
1708									return Err(<A::Error as de::Error>::duplicate_field("brand"));
1709								}
1710								r#brand_property = Some({
1711									struct DeserializeWith(Vec<BrandProperty>);
1712									impl<'de> Deserialize<'de> for DeserializeWith {
1713										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1714										where
1715											D: Deserializer<'de>,
1716										{
1717											Ok(DeserializeWith(serde_with::As::<
1718												serde_with::OneOrMany<serde_with::Same>,
1719											>::deserialize(deserializer)?))
1720										}
1721									}
1722									match map.next_value::<DeserializeWith>() {
1723										Ok(deserialize_with) => deserialize_with.0,
1724										Err(err) => {
1725											return Err(err);
1726										}
1727									}
1728								});
1729							}
1730							Field::Broker => {
1731								if r#broker_property.is_some() {
1732									return Err(<A::Error as de::Error>::duplicate_field("broker"));
1733								}
1734								r#broker_property = Some({
1735									struct DeserializeWith(Vec<BrokerProperty>);
1736									impl<'de> Deserialize<'de> for DeserializeWith {
1737										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1738										where
1739											D: Deserializer<'de>,
1740										{
1741											Ok(DeserializeWith(serde_with::As::<
1742												serde_with::OneOrMany<serde_with::Same>,
1743											>::deserialize(deserializer)?))
1744										}
1745									}
1746									match map.next_value::<DeserializeWith>() {
1747										Ok(deserialize_with) => deserialize_with.0,
1748										Err(err) => {
1749											return Err(err);
1750										}
1751									}
1752								});
1753							}
1754							Field::Category => {
1755								if r#category_property.is_some() {
1756									return Err(<A::Error as de::Error>::duplicate_field(
1757										"category",
1758									));
1759								}
1760								r#category_property = Some({
1761									struct DeserializeWith(Vec<CategoryProperty>);
1762									impl<'de> Deserialize<'de> for DeserializeWith {
1763										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1764										where
1765											D: Deserializer<'de>,
1766										{
1767											Ok(DeserializeWith(serde_with::As::<
1768												serde_with::OneOrMany<serde_with::Same>,
1769											>::deserialize(deserializer)?))
1770										}
1771									}
1772									match map.next_value::<DeserializeWith>() {
1773										Ok(deserialize_with) => deserialize_with.0,
1774										Err(err) => {
1775											return Err(err);
1776										}
1777									}
1778								});
1779							}
1780							Field::HasOfferCatalog => {
1781								if r#has_offer_catalog_property.is_some() {
1782									return Err(<A::Error as de::Error>::duplicate_field(
1783										"hasOfferCatalog",
1784									));
1785								}
1786								r#has_offer_catalog_property = Some({
1787									struct DeserializeWith(Vec<HasOfferCatalogProperty>);
1788									impl<'de> Deserialize<'de> for DeserializeWith {
1789										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1790										where
1791											D: Deserializer<'de>,
1792										{
1793											Ok(DeserializeWith(serde_with::As::<
1794												serde_with::OneOrMany<serde_with::Same>,
1795											>::deserialize(deserializer)?))
1796										}
1797									}
1798									match map.next_value::<DeserializeWith>() {
1799										Ok(deserialize_with) => deserialize_with.0,
1800										Err(err) => {
1801											return Err(err);
1802										}
1803									}
1804								});
1805							}
1806							Field::HoursAvailable => {
1807								if r#hours_available_property.is_some() {
1808									return Err(<A::Error as de::Error>::duplicate_field(
1809										"hoursAvailable",
1810									));
1811								}
1812								r#hours_available_property = Some({
1813									struct DeserializeWith(Vec<HoursAvailableProperty>);
1814									impl<'de> Deserialize<'de> for DeserializeWith {
1815										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1816										where
1817											D: Deserializer<'de>,
1818										{
1819											Ok(DeserializeWith(serde_with::As::<
1820												serde_with::OneOrMany<serde_with::Same>,
1821											>::deserialize(deserializer)?))
1822										}
1823									}
1824									match map.next_value::<DeserializeWith>() {
1825										Ok(deserialize_with) => deserialize_with.0,
1826										Err(err) => {
1827											return Err(err);
1828										}
1829									}
1830								});
1831							}
1832							Field::IsRelatedTo => {
1833								if r#is_related_to_property.is_some() {
1834									return Err(<A::Error as de::Error>::duplicate_field(
1835										"isRelatedTo",
1836									));
1837								}
1838								r#is_related_to_property = Some({
1839									struct DeserializeWith(Vec<IsRelatedToProperty>);
1840									impl<'de> Deserialize<'de> for DeserializeWith {
1841										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1842										where
1843											D: Deserializer<'de>,
1844										{
1845											Ok(DeserializeWith(serde_with::As::<
1846												serde_with::OneOrMany<serde_with::Same>,
1847											>::deserialize(deserializer)?))
1848										}
1849									}
1850									match map.next_value::<DeserializeWith>() {
1851										Ok(deserialize_with) => deserialize_with.0,
1852										Err(err) => {
1853											return Err(err);
1854										}
1855									}
1856								});
1857							}
1858							Field::IsSimilarTo => {
1859								if r#is_similar_to_property.is_some() {
1860									return Err(<A::Error as de::Error>::duplicate_field(
1861										"isSimilarTo",
1862									));
1863								}
1864								r#is_similar_to_property = Some({
1865									struct DeserializeWith(Vec<IsSimilarToProperty>);
1866									impl<'de> Deserialize<'de> for DeserializeWith {
1867										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1868										where
1869											D: Deserializer<'de>,
1870										{
1871											Ok(DeserializeWith(serde_with::As::<
1872												serde_with::OneOrMany<serde_with::Same>,
1873											>::deserialize(deserializer)?))
1874										}
1875									}
1876									match map.next_value::<DeserializeWith>() {
1877										Ok(deserialize_with) => deserialize_with.0,
1878										Err(err) => {
1879											return Err(err);
1880										}
1881									}
1882								});
1883							}
1884							Field::Logo => {
1885								if r#logo_property.is_some() {
1886									return Err(<A::Error as de::Error>::duplicate_field("logo"));
1887								}
1888								r#logo_property = Some({
1889									struct DeserializeWith(Vec<LogoProperty>);
1890									impl<'de> Deserialize<'de> for DeserializeWith {
1891										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1892										where
1893											D: Deserializer<'de>,
1894										{
1895											Ok(DeserializeWith(serde_with::As::<
1896												serde_with::OneOrMany<serde_with::Same>,
1897											>::deserialize(deserializer)?))
1898										}
1899									}
1900									match map.next_value::<DeserializeWith>() {
1901										Ok(deserialize_with) => deserialize_with.0,
1902										Err(err) => {
1903											return Err(err);
1904										}
1905									}
1906								});
1907							}
1908							Field::Offers => {
1909								if r#offers_property.is_some() {
1910									return Err(<A::Error as de::Error>::duplicate_field("offers"));
1911								}
1912								r#offers_property = Some({
1913									struct DeserializeWith(Vec<OffersProperty>);
1914									impl<'de> Deserialize<'de> for DeserializeWith {
1915										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1916										where
1917											D: Deserializer<'de>,
1918										{
1919											Ok(DeserializeWith(serde_with::As::<
1920												serde_with::OneOrMany<serde_with::Same>,
1921											>::deserialize(deserializer)?))
1922										}
1923									}
1924									match map.next_value::<DeserializeWith>() {
1925										Ok(deserialize_with) => deserialize_with.0,
1926										Err(err) => {
1927											return Err(err);
1928										}
1929									}
1930								});
1931							}
1932							Field::Produces => {
1933								if r#produces_property.is_some() {
1934									return Err(<A::Error as de::Error>::duplicate_field(
1935										"produces",
1936									));
1937								}
1938								r#produces_property = Some({
1939									struct DeserializeWith(Vec<ProducesProperty>);
1940									impl<'de> Deserialize<'de> for DeserializeWith {
1941										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1942										where
1943											D: Deserializer<'de>,
1944										{
1945											Ok(DeserializeWith(serde_with::As::<
1946												serde_with::OneOrMany<serde_with::Same>,
1947											>::deserialize(deserializer)?))
1948										}
1949									}
1950									match map.next_value::<DeserializeWith>() {
1951										Ok(deserialize_with) => deserialize_with.0,
1952										Err(err) => {
1953											return Err(err);
1954										}
1955									}
1956								});
1957							}
1958							Field::Provider => {
1959								if r#provider_property.is_some() {
1960									return Err(<A::Error as de::Error>::duplicate_field(
1961										"provider",
1962									));
1963								}
1964								r#provider_property = Some({
1965									struct DeserializeWith(Vec<ProviderProperty>);
1966									impl<'de> Deserialize<'de> for DeserializeWith {
1967										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1968										where
1969											D: Deserializer<'de>,
1970										{
1971											Ok(DeserializeWith(serde_with::As::<
1972												serde_with::OneOrMany<serde_with::Same>,
1973											>::deserialize(deserializer)?))
1974										}
1975									}
1976									match map.next_value::<DeserializeWith>() {
1977										Ok(deserialize_with) => deserialize_with.0,
1978										Err(err) => {
1979											return Err(err);
1980										}
1981									}
1982								});
1983							}
1984							Field::ProviderMobility => {
1985								if r#provider_mobility_property.is_some() {
1986									return Err(<A::Error as de::Error>::duplicate_field(
1987										"providerMobility",
1988									));
1989								}
1990								r#provider_mobility_property = Some({
1991									struct DeserializeWith(Vec<ProviderMobilityProperty>);
1992									impl<'de> Deserialize<'de> for DeserializeWith {
1993										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1994										where
1995											D: Deserializer<'de>,
1996										{
1997											Ok(DeserializeWith(serde_with::As::<
1998												serde_with::OneOrMany<serde_with::Same>,
1999											>::deserialize(deserializer)?))
2000										}
2001									}
2002									match map.next_value::<DeserializeWith>() {
2003										Ok(deserialize_with) => deserialize_with.0,
2004										Err(err) => {
2005											return Err(err);
2006										}
2007									}
2008								});
2009							}
2010							Field::Review => {
2011								if r#review_property.is_some() {
2012									return Err(<A::Error as de::Error>::duplicate_field("review"));
2013								}
2014								r#review_property = Some({
2015									struct DeserializeWith(Vec<ReviewProperty>);
2016									impl<'de> Deserialize<'de> for DeserializeWith {
2017										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2018										where
2019											D: Deserializer<'de>,
2020										{
2021											Ok(DeserializeWith(serde_with::As::<
2022												serde_with::OneOrMany<serde_with::Same>,
2023											>::deserialize(deserializer)?))
2024										}
2025									}
2026									match map.next_value::<DeserializeWith>() {
2027										Ok(deserialize_with) => deserialize_with.0,
2028										Err(err) => {
2029											return Err(err);
2030										}
2031									}
2032								});
2033							}
2034							Field::ServiceArea => {
2035								if r#service_area_property.is_some() {
2036									return Err(<A::Error as de::Error>::duplicate_field(
2037										"serviceArea",
2038									));
2039								}
2040								r#service_area_property = Some({
2041									struct DeserializeWith(Vec<ServiceAreaProperty>);
2042									impl<'de> Deserialize<'de> for DeserializeWith {
2043										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2044										where
2045											D: Deserializer<'de>,
2046										{
2047											Ok(DeserializeWith(serde_with::As::<
2048												serde_with::OneOrMany<serde_with::Same>,
2049											>::deserialize(deserializer)?))
2050										}
2051									}
2052									match map.next_value::<DeserializeWith>() {
2053										Ok(deserialize_with) => deserialize_with.0,
2054										Err(err) => {
2055											return Err(err);
2056										}
2057									}
2058								});
2059							}
2060							Field::ServiceAudience => {
2061								if r#service_audience_property.is_some() {
2062									return Err(<A::Error as de::Error>::duplicate_field(
2063										"serviceAudience",
2064									));
2065								}
2066								r#service_audience_property = Some({
2067									struct DeserializeWith(Vec<ServiceAudienceProperty>);
2068									impl<'de> Deserialize<'de> for DeserializeWith {
2069										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2070										where
2071											D: Deserializer<'de>,
2072										{
2073											Ok(DeserializeWith(serde_with::As::<
2074												serde_with::OneOrMany<serde_with::Same>,
2075											>::deserialize(deserializer)?))
2076										}
2077									}
2078									match map.next_value::<DeserializeWith>() {
2079										Ok(deserialize_with) => deserialize_with.0,
2080										Err(err) => {
2081											return Err(err);
2082										}
2083									}
2084								});
2085							}
2086							Field::ServiceOutput => {
2087								if r#service_output_property.is_some() {
2088									return Err(<A::Error as de::Error>::duplicate_field(
2089										"serviceOutput",
2090									));
2091								}
2092								r#service_output_property = Some({
2093									struct DeserializeWith(Vec<ServiceOutputProperty>);
2094									impl<'de> Deserialize<'de> for DeserializeWith {
2095										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2096										where
2097											D: Deserializer<'de>,
2098										{
2099											Ok(DeserializeWith(serde_with::As::<
2100												serde_with::OneOrMany<serde_with::Same>,
2101											>::deserialize(deserializer)?))
2102										}
2103									}
2104									match map.next_value::<DeserializeWith>() {
2105										Ok(deserialize_with) => deserialize_with.0,
2106										Err(err) => {
2107											return Err(err);
2108										}
2109									}
2110								});
2111							}
2112							Field::ServiceType => {
2113								if r#service_type_property.is_some() {
2114									return Err(<A::Error as de::Error>::duplicate_field(
2115										"serviceType",
2116									));
2117								}
2118								r#service_type_property = Some({
2119									struct DeserializeWith(Vec<ServiceTypeProperty>);
2120									impl<'de> Deserialize<'de> for DeserializeWith {
2121										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2122										where
2123											D: Deserializer<'de>,
2124										{
2125											Ok(DeserializeWith(serde_with::As::<
2126												serde_with::OneOrMany<serde_with::Same>,
2127											>::deserialize(deserializer)?))
2128										}
2129									}
2130									match map.next_value::<DeserializeWith>() {
2131										Ok(deserialize_with) => deserialize_with.0,
2132										Err(err) => {
2133											return Err(err);
2134										}
2135									}
2136								});
2137							}
2138							Field::Slogan => {
2139								if r#slogan_property.is_some() {
2140									return Err(<A::Error as de::Error>::duplicate_field("slogan"));
2141								}
2142								r#slogan_property = Some({
2143									struct DeserializeWith(Vec<SloganProperty>);
2144									impl<'de> Deserialize<'de> for DeserializeWith {
2145										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2146										where
2147											D: Deserializer<'de>,
2148										{
2149											Ok(DeserializeWith(serde_with::As::<
2150												serde_with::OneOrMany<serde_with::Same>,
2151											>::deserialize(deserializer)?))
2152										}
2153									}
2154									match map.next_value::<DeserializeWith>() {
2155										Ok(deserialize_with) => deserialize_with.0,
2156										Err(err) => {
2157											return Err(err);
2158										}
2159									}
2160								});
2161							}
2162							Field::TermsOfService => {
2163								if r#terms_of_service_property.is_some() {
2164									return Err(<A::Error as de::Error>::duplicate_field(
2165										"termsOfService",
2166									));
2167								}
2168								r#terms_of_service_property = Some({
2169									struct DeserializeWith(Vec<TermsOfServiceProperty>);
2170									impl<'de> Deserialize<'de> for DeserializeWith {
2171										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2172										where
2173											D: Deserializer<'de>,
2174										{
2175											Ok(DeserializeWith(serde_with::As::<
2176												serde_with::OneOrMany<serde_with::Same>,
2177											>::deserialize(deserializer)?))
2178										}
2179									}
2180									match map.next_value::<DeserializeWith>() {
2181										Ok(deserialize_with) => deserialize_with.0,
2182										Err(err) => {
2183											return Err(err);
2184										}
2185									}
2186								});
2187							}
2188							Field::AdditionalType => {
2189								if r#additional_type_property.is_some() {
2190									return Err(<A::Error as de::Error>::duplicate_field(
2191										"additionalType",
2192									));
2193								}
2194								r#additional_type_property = Some({
2195									struct DeserializeWith(Vec<AdditionalTypeProperty>);
2196									impl<'de> Deserialize<'de> for DeserializeWith {
2197										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2198										where
2199											D: Deserializer<'de>,
2200										{
2201											Ok(DeserializeWith(serde_with::As::<
2202												serde_with::OneOrMany<serde_with::Same>,
2203											>::deserialize(deserializer)?))
2204										}
2205									}
2206									match map.next_value::<DeserializeWith>() {
2207										Ok(deserialize_with) => deserialize_with.0,
2208										Err(err) => {
2209											return Err(err);
2210										}
2211									}
2212								});
2213							}
2214							Field::AlternateName => {
2215								if r#alternate_name_property.is_some() {
2216									return Err(<A::Error as de::Error>::duplicate_field(
2217										"alternateName",
2218									));
2219								}
2220								r#alternate_name_property = Some({
2221									struct DeserializeWith(Vec<AlternateNameProperty>);
2222									impl<'de> Deserialize<'de> for DeserializeWith {
2223										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2224										where
2225											D: Deserializer<'de>,
2226										{
2227											Ok(DeserializeWith(serde_with::As::<
2228												serde_with::OneOrMany<serde_with::Same>,
2229											>::deserialize(deserializer)?))
2230										}
2231									}
2232									match map.next_value::<DeserializeWith>() {
2233										Ok(deserialize_with) => deserialize_with.0,
2234										Err(err) => {
2235											return Err(err);
2236										}
2237									}
2238								});
2239							}
2240							Field::Description => {
2241								if r#description_property.is_some() {
2242									return Err(<A::Error as de::Error>::duplicate_field(
2243										"description",
2244									));
2245								}
2246								r#description_property = Some({
2247									struct DeserializeWith(Vec<DescriptionProperty>);
2248									impl<'de> Deserialize<'de> for DeserializeWith {
2249										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2250										where
2251											D: Deserializer<'de>,
2252										{
2253											Ok(DeserializeWith(serde_with::As::<
2254												serde_with::OneOrMany<serde_with::Same>,
2255											>::deserialize(deserializer)?))
2256										}
2257									}
2258									match map.next_value::<DeserializeWith>() {
2259										Ok(deserialize_with) => deserialize_with.0,
2260										Err(err) => {
2261											return Err(err);
2262										}
2263									}
2264								});
2265							}
2266							Field::DisambiguatingDescription => {
2267								if r#disambiguating_description_property.is_some() {
2268									return Err(<A::Error as de::Error>::duplicate_field(
2269										"disambiguatingDescription",
2270									));
2271								}
2272								r#disambiguating_description_property = Some({
2273									struct DeserializeWith(Vec<DisambiguatingDescriptionProperty>);
2274									impl<'de> Deserialize<'de> for DeserializeWith {
2275										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2276										where
2277											D: Deserializer<'de>,
2278										{
2279											Ok(DeserializeWith(serde_with::As::<
2280												serde_with::OneOrMany<serde_with::Same>,
2281											>::deserialize(deserializer)?))
2282										}
2283									}
2284									match map.next_value::<DeserializeWith>() {
2285										Ok(deserialize_with) => deserialize_with.0,
2286										Err(err) => {
2287											return Err(err);
2288										}
2289									}
2290								});
2291							}
2292							Field::Identifier => {
2293								if r#identifier_property.is_some() {
2294									return Err(<A::Error as de::Error>::duplicate_field(
2295										"identifier",
2296									));
2297								}
2298								r#identifier_property = Some({
2299									struct DeserializeWith(Vec<IdentifierProperty>);
2300									impl<'de> Deserialize<'de> for DeserializeWith {
2301										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2302										where
2303											D: Deserializer<'de>,
2304										{
2305											Ok(DeserializeWith(serde_with::As::<
2306												serde_with::OneOrMany<serde_with::Same>,
2307											>::deserialize(deserializer)?))
2308										}
2309									}
2310									match map.next_value::<DeserializeWith>() {
2311										Ok(deserialize_with) => deserialize_with.0,
2312										Err(err) => {
2313											return Err(err);
2314										}
2315									}
2316								});
2317							}
2318							Field::Image => {
2319								if r#image_property.is_some() {
2320									return Err(<A::Error as de::Error>::duplicate_field("image"));
2321								}
2322								r#image_property = Some({
2323									struct DeserializeWith(Vec<ImageProperty>);
2324									impl<'de> Deserialize<'de> for DeserializeWith {
2325										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2326										where
2327											D: Deserializer<'de>,
2328										{
2329											Ok(DeserializeWith(serde_with::As::<
2330												serde_with::OneOrMany<serde_with::Same>,
2331											>::deserialize(deserializer)?))
2332										}
2333									}
2334									match map.next_value::<DeserializeWith>() {
2335										Ok(deserialize_with) => deserialize_with.0,
2336										Err(err) => {
2337											return Err(err);
2338										}
2339									}
2340								});
2341							}
2342							Field::MainEntityOfPage => {
2343								if r#main_entity_of_page_property.is_some() {
2344									return Err(<A::Error as de::Error>::duplicate_field(
2345										"mainEntityOfPage",
2346									));
2347								}
2348								r#main_entity_of_page_property = Some({
2349									struct DeserializeWith(Vec<MainEntityOfPageProperty>);
2350									impl<'de> Deserialize<'de> for DeserializeWith {
2351										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2352										where
2353											D: Deserializer<'de>,
2354										{
2355											Ok(DeserializeWith(serde_with::As::<
2356												serde_with::OneOrMany<serde_with::Same>,
2357											>::deserialize(deserializer)?))
2358										}
2359									}
2360									match map.next_value::<DeserializeWith>() {
2361										Ok(deserialize_with) => deserialize_with.0,
2362										Err(err) => {
2363											return Err(err);
2364										}
2365									}
2366								});
2367							}
2368							Field::Name => {
2369								if r#name_property.is_some() {
2370									return Err(<A::Error as de::Error>::duplicate_field("name"));
2371								}
2372								r#name_property = Some({
2373									struct DeserializeWith(Vec<NameProperty>);
2374									impl<'de> Deserialize<'de> for DeserializeWith {
2375										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2376										where
2377											D: Deserializer<'de>,
2378										{
2379											Ok(DeserializeWith(serde_with::As::<
2380												serde_with::OneOrMany<serde_with::Same>,
2381											>::deserialize(deserializer)?))
2382										}
2383									}
2384									match map.next_value::<DeserializeWith>() {
2385										Ok(deserialize_with) => deserialize_with.0,
2386										Err(err) => {
2387											return Err(err);
2388										}
2389									}
2390								});
2391							}
2392							Field::PotentialAction => {
2393								if r#potential_action_property.is_some() {
2394									return Err(<A::Error as de::Error>::duplicate_field(
2395										"potentialAction",
2396									));
2397								}
2398								r#potential_action_property = Some({
2399									struct DeserializeWith(Vec<PotentialActionProperty>);
2400									impl<'de> Deserialize<'de> for DeserializeWith {
2401										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2402										where
2403											D: Deserializer<'de>,
2404										{
2405											Ok(DeserializeWith(serde_with::As::<
2406												serde_with::OneOrMany<serde_with::Same>,
2407											>::deserialize(deserializer)?))
2408										}
2409									}
2410									match map.next_value::<DeserializeWith>() {
2411										Ok(deserialize_with) => deserialize_with.0,
2412										Err(err) => {
2413											return Err(err);
2414										}
2415									}
2416								});
2417							}
2418							Field::SameAs => {
2419								if r#same_as_property.is_some() {
2420									return Err(<A::Error as de::Error>::duplicate_field("sameAs"));
2421								}
2422								r#same_as_property = Some({
2423									struct DeserializeWith(Vec<SameAsProperty>);
2424									impl<'de> Deserialize<'de> for DeserializeWith {
2425										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2426										where
2427											D: Deserializer<'de>,
2428										{
2429											Ok(DeserializeWith(serde_with::As::<
2430												serde_with::OneOrMany<serde_with::Same>,
2431											>::deserialize(deserializer)?))
2432										}
2433									}
2434									match map.next_value::<DeserializeWith>() {
2435										Ok(deserialize_with) => deserialize_with.0,
2436										Err(err) => {
2437											return Err(err);
2438										}
2439									}
2440								});
2441							}
2442							Field::SubjectOf => {
2443								if r#subject_of_property.is_some() {
2444									return Err(<A::Error as de::Error>::duplicate_field(
2445										"subjectOf",
2446									));
2447								}
2448								r#subject_of_property = Some({
2449									struct DeserializeWith(Vec<SubjectOfProperty>);
2450									impl<'de> Deserialize<'de> for DeserializeWith {
2451										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2452										where
2453											D: Deserializer<'de>,
2454										{
2455											Ok(DeserializeWith(serde_with::As::<
2456												serde_with::OneOrMany<serde_with::Same>,
2457											>::deserialize(deserializer)?))
2458										}
2459									}
2460									match map.next_value::<DeserializeWith>() {
2461										Ok(deserialize_with) => deserialize_with.0,
2462										Err(err) => {
2463											return Err(err);
2464										}
2465									}
2466								});
2467							}
2468							Field::Url => {
2469								if r#url_property.is_some() {
2470									return Err(<A::Error as de::Error>::duplicate_field("url"));
2471								}
2472								r#url_property = Some({
2473									struct DeserializeWith(Vec<UrlProperty>);
2474									impl<'de> Deserialize<'de> for DeserializeWith {
2475										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
2476										where
2477											D: Deserializer<'de>,
2478										{
2479											Ok(DeserializeWith(serde_with::As::<
2480												serde_with::OneOrMany<serde_with::Same>,
2481											>::deserialize(deserializer)?))
2482										}
2483									}
2484									match map.next_value::<DeserializeWith>() {
2485										Ok(deserialize_with) => deserialize_with.0,
2486										Err(err) => {
2487											return Err(err);
2488										}
2489									}
2490								});
2491							}
2492							Field::Ignore => {
2493								let _ = map.next_value::<de::IgnoredAny>()?;
2494							}
2495						}
2496					}
2497					Ok(BankAccount {
2498						r#account_minimum_inflow: r#account_minimum_inflow_property
2499							.unwrap_or_default(),
2500						r#account_overdraft_limit: r#account_overdraft_limit_property
2501							.unwrap_or_default(),
2502						r#bank_account_type: r#bank_account_type_property.unwrap_or_default(),
2503						r#annual_percentage_rate: r#annual_percentage_rate_property
2504							.unwrap_or_default(),
2505						r#fees_and_commissions_specification:
2506							r#fees_and_commissions_specification_property.unwrap_or_default(),
2507						r#interest_rate: r#interest_rate_property.unwrap_or_default(),
2508						r#aggregate_rating: r#aggregate_rating_property.unwrap_or_default(),
2509						r#area_served: r#area_served_property.unwrap_or_default(),
2510						r#audience: r#audience_property.unwrap_or_default(),
2511						r#available_channel: r#available_channel_property.unwrap_or_default(),
2512						r#award: r#award_property.unwrap_or_default(),
2513						r#brand: r#brand_property.unwrap_or_default(),
2514						r#broker: r#broker_property.unwrap_or_default(),
2515						r#category: r#category_property.unwrap_or_default(),
2516						r#has_offer_catalog: r#has_offer_catalog_property.unwrap_or_default(),
2517						r#hours_available: r#hours_available_property.unwrap_or_default(),
2518						r#is_related_to: r#is_related_to_property.unwrap_or_default(),
2519						r#is_similar_to: r#is_similar_to_property.unwrap_or_default(),
2520						r#logo: r#logo_property.unwrap_or_default(),
2521						r#offers: r#offers_property.unwrap_or_default(),
2522						r#produces: r#produces_property.unwrap_or_default(),
2523						r#provider: r#provider_property.unwrap_or_default(),
2524						r#provider_mobility: r#provider_mobility_property.unwrap_or_default(),
2525						r#review: r#review_property.unwrap_or_default(),
2526						r#service_area: r#service_area_property.unwrap_or_default(),
2527						r#service_audience: r#service_audience_property.unwrap_or_default(),
2528						r#service_output: r#service_output_property.unwrap_or_default(),
2529						r#service_type: r#service_type_property.unwrap_or_default(),
2530						r#slogan: r#slogan_property.unwrap_or_default(),
2531						r#terms_of_service: r#terms_of_service_property.unwrap_or_default(),
2532						r#additional_type: r#additional_type_property.unwrap_or_default(),
2533						r#alternate_name: r#alternate_name_property.unwrap_or_default(),
2534						r#description: r#description_property.unwrap_or_default(),
2535						r#disambiguating_description: r#disambiguating_description_property
2536							.unwrap_or_default(),
2537						r#identifier: r#identifier_property.unwrap_or_default(),
2538						r#image: r#image_property.unwrap_or_default(),
2539						r#main_entity_of_page: r#main_entity_of_page_property.unwrap_or_default(),
2540						r#name: r#name_property.unwrap_or_default(),
2541						r#potential_action: r#potential_action_property.unwrap_or_default(),
2542						r#same_as: r#same_as_property.unwrap_or_default(),
2543						r#subject_of: r#subject_of_property.unwrap_or_default(),
2544						r#url: r#url_property.unwrap_or_default(),
2545					})
2546				}
2547			}
2548			const FIELDS: &[&str] = &[
2549				"accountMinimumInflow",
2550				"accountOverdraftLimit",
2551				"bankAccountType",
2552				"annualPercentageRate",
2553				"feesAndCommissionsSpecification",
2554				"interestRate",
2555				"aggregateRating",
2556				"areaServed",
2557				"audience",
2558				"availableChannel",
2559				"award",
2560				"brand",
2561				"broker",
2562				"category",
2563				"hasOfferCatalog",
2564				"hoursAvailable",
2565				"isRelatedTo",
2566				"isSimilarTo",
2567				"logo",
2568				"offers",
2569				"produces",
2570				"provider",
2571				"providerMobility",
2572				"review",
2573				"serviceArea",
2574				"serviceAudience",
2575				"serviceOutput",
2576				"serviceType",
2577				"slogan",
2578				"termsOfService",
2579				"additionalType",
2580				"alternateName",
2581				"description",
2582				"disambiguatingDescription",
2583				"identifier",
2584				"image",
2585				"mainEntityOfPage",
2586				"name",
2587				"potentialAction",
2588				"sameAs",
2589				"subjectOf",
2590				"url",
2591			];
2592			deserializer.deserialize_struct("BankAccount", FIELDS, ClassVisitor)
2593		}
2594	}
2595}