schema_org_types/schemas/classes/
perform_action.rs

1use super::*;
2/// <https://schema.org/PerformAction>
3#[cfg_attr(feature = "derive-debug", derive(Debug))]
4#[cfg_attr(feature = "derive-clone", derive(Clone))]
5pub struct PerformAction {
6	/// <https://schema.org/entertainmentBusiness>
7	pub r#entertainment_business: Vec<EntertainmentBusinessProperty>,
8	/// <https://schema.org/actionStatus>
9	pub r#action_status: Vec<ActionStatusProperty>,
10	/// <https://schema.org/agent>
11	pub r#agent: Vec<AgentProperty>,
12	/// <https://schema.org/endTime>
13	pub r#end_time: Vec<EndTimeProperty>,
14	/// <https://schema.org/error>
15	pub r#error: Vec<ErrorProperty>,
16	/// <https://schema.org/instrument>
17	pub r#instrument: Vec<InstrumentProperty>,
18	/// <https://schema.org/location>
19	pub r#location: Vec<LocationProperty>,
20	/// <https://schema.org/object>
21	pub r#object: Vec<ObjectProperty>,
22	/// <https://schema.org/participant>
23	pub r#participant: Vec<ParticipantProperty>,
24	/// <https://schema.org/provider>
25	pub r#provider: Vec<ProviderProperty>,
26	/// <https://schema.org/result>
27	pub r#result: Vec<ResultProperty>,
28	/// <https://schema.org/startTime>
29	pub r#start_time: Vec<StartTimeProperty>,
30	/// <https://schema.org/target>
31	pub r#target: Vec<TargetProperty>,
32	/// <https://schema.org/audience>
33	pub r#audience: Vec<AudienceProperty>,
34	/// <https://schema.org/event>
35	pub r#event: Vec<EventProperty>,
36	/// <https://schema.org/additionalType>
37	pub r#additional_type: Vec<AdditionalTypeProperty>,
38	/// <https://schema.org/alternateName>
39	pub r#alternate_name: Vec<AlternateNameProperty>,
40	/// <https://schema.org/description>
41	pub r#description: Vec<DescriptionProperty>,
42	/// <https://schema.org/disambiguatingDescription>
43	pub r#disambiguating_description: Vec<DisambiguatingDescriptionProperty>,
44	/// <https://schema.org/identifier>
45	pub r#identifier: Vec<IdentifierProperty>,
46	/// <https://schema.org/image>
47	pub r#image: Vec<ImageProperty>,
48	/// <https://schema.org/mainEntityOfPage>
49	pub r#main_entity_of_page: Vec<MainEntityOfPageProperty>,
50	/// <https://schema.org/name>
51	pub r#name: Vec<NameProperty>,
52	/// <https://schema.org/potentialAction>
53	pub r#potential_action: Vec<PotentialActionProperty>,
54	/// <https://schema.org/sameAs>
55	pub r#same_as: Vec<SameAsProperty>,
56	/// <https://schema.org/subjectOf>
57	pub r#subject_of: Vec<SubjectOfProperty>,
58	/// <https://schema.org/url>
59	pub r#url: Vec<UrlProperty>,
60}
61/// This trait is for properties from <https://schema.org/PerformAction>.
62pub trait PerformActionTrait {
63	/// Get <https://schema.org/entertainmentBusiness> from [`Self`] as borrowed slice.
64	fn get_entertainment_business(&self) -> &[EntertainmentBusinessProperty];
65	/// Take <https://schema.org/entertainmentBusiness> from [`Self`] as owned vector.
66	fn take_entertainment_business(&mut self) -> Vec<EntertainmentBusinessProperty>;
67}
68impl PerformActionTrait for PerformAction {
69	fn get_entertainment_business(&self) -> &[EntertainmentBusinessProperty] {
70		self.r#entertainment_business.as_slice()
71	}
72	fn take_entertainment_business(&mut self) -> Vec<EntertainmentBusinessProperty> {
73		std::mem::take(&mut self.r#entertainment_business)
74	}
75}
76impl ActionTrait for PerformAction {
77	fn get_action_status(&self) -> &[ActionStatusProperty] {
78		self.r#action_status.as_slice()
79	}
80	fn take_action_status(&mut self) -> Vec<ActionStatusProperty> {
81		std::mem::take(&mut self.r#action_status)
82	}
83	fn get_agent(&self) -> &[AgentProperty] {
84		self.r#agent.as_slice()
85	}
86	fn take_agent(&mut self) -> Vec<AgentProperty> {
87		std::mem::take(&mut self.r#agent)
88	}
89	fn get_end_time(&self) -> &[EndTimeProperty] {
90		self.r#end_time.as_slice()
91	}
92	fn take_end_time(&mut self) -> Vec<EndTimeProperty> {
93		std::mem::take(&mut self.r#end_time)
94	}
95	fn get_error(&self) -> &[ErrorProperty] {
96		self.r#error.as_slice()
97	}
98	fn take_error(&mut self) -> Vec<ErrorProperty> {
99		std::mem::take(&mut self.r#error)
100	}
101	fn get_instrument(&self) -> &[InstrumentProperty] {
102		self.r#instrument.as_slice()
103	}
104	fn take_instrument(&mut self) -> Vec<InstrumentProperty> {
105		std::mem::take(&mut self.r#instrument)
106	}
107	fn get_location(&self) -> &[LocationProperty] {
108		self.r#location.as_slice()
109	}
110	fn take_location(&mut self) -> Vec<LocationProperty> {
111		std::mem::take(&mut self.r#location)
112	}
113	fn get_object(&self) -> &[ObjectProperty] {
114		self.r#object.as_slice()
115	}
116	fn take_object(&mut self) -> Vec<ObjectProperty> {
117		std::mem::take(&mut self.r#object)
118	}
119	fn get_participant(&self) -> &[ParticipantProperty] {
120		self.r#participant.as_slice()
121	}
122	fn take_participant(&mut self) -> Vec<ParticipantProperty> {
123		std::mem::take(&mut self.r#participant)
124	}
125	fn get_provider(&self) -> &[ProviderProperty] {
126		self.r#provider.as_slice()
127	}
128	fn take_provider(&mut self) -> Vec<ProviderProperty> {
129		std::mem::take(&mut self.r#provider)
130	}
131	fn get_result(&self) -> &[ResultProperty] {
132		self.r#result.as_slice()
133	}
134	fn take_result(&mut self) -> Vec<ResultProperty> {
135		std::mem::take(&mut self.r#result)
136	}
137	fn get_start_time(&self) -> &[StartTimeProperty] {
138		self.r#start_time.as_slice()
139	}
140	fn take_start_time(&mut self) -> Vec<StartTimeProperty> {
141		std::mem::take(&mut self.r#start_time)
142	}
143	fn get_target(&self) -> &[TargetProperty] {
144		self.r#target.as_slice()
145	}
146	fn take_target(&mut self) -> Vec<TargetProperty> {
147		std::mem::take(&mut self.r#target)
148	}
149}
150impl PlayActionTrait for PerformAction {
151	fn get_audience(&self) -> &[AudienceProperty] {
152		self.r#audience.as_slice()
153	}
154	fn take_audience(&mut self) -> Vec<AudienceProperty> {
155		std::mem::take(&mut self.r#audience)
156	}
157	fn get_event(&self) -> &[EventProperty] {
158		self.r#event.as_slice()
159	}
160	fn take_event(&mut self) -> Vec<EventProperty> {
161		std::mem::take(&mut self.r#event)
162	}
163}
164impl ThingTrait for PerformAction {
165	fn get_additional_type(&self) -> &[AdditionalTypeProperty] {
166		self.r#additional_type.as_slice()
167	}
168	fn take_additional_type(&mut self) -> Vec<AdditionalTypeProperty> {
169		std::mem::take(&mut self.r#additional_type)
170	}
171	fn get_alternate_name(&self) -> &[AlternateNameProperty] {
172		self.r#alternate_name.as_slice()
173	}
174	fn take_alternate_name(&mut self) -> Vec<AlternateNameProperty> {
175		std::mem::take(&mut self.r#alternate_name)
176	}
177	fn get_description(&self) -> &[DescriptionProperty] {
178		self.r#description.as_slice()
179	}
180	fn take_description(&mut self) -> Vec<DescriptionProperty> {
181		std::mem::take(&mut self.r#description)
182	}
183	fn get_disambiguating_description(&self) -> &[DisambiguatingDescriptionProperty] {
184		self.r#disambiguating_description.as_slice()
185	}
186	fn take_disambiguating_description(&mut self) -> Vec<DisambiguatingDescriptionProperty> {
187		std::mem::take(&mut self.r#disambiguating_description)
188	}
189	fn get_identifier(&self) -> &[IdentifierProperty] {
190		self.r#identifier.as_slice()
191	}
192	fn take_identifier(&mut self) -> Vec<IdentifierProperty> {
193		std::mem::take(&mut self.r#identifier)
194	}
195	fn get_image(&self) -> &[ImageProperty] {
196		self.r#image.as_slice()
197	}
198	fn take_image(&mut self) -> Vec<ImageProperty> {
199		std::mem::take(&mut self.r#image)
200	}
201	fn get_main_entity_of_page(&self) -> &[MainEntityOfPageProperty] {
202		self.r#main_entity_of_page.as_slice()
203	}
204	fn take_main_entity_of_page(&mut self) -> Vec<MainEntityOfPageProperty> {
205		std::mem::take(&mut self.r#main_entity_of_page)
206	}
207	fn get_name(&self) -> &[NameProperty] {
208		self.r#name.as_slice()
209	}
210	fn take_name(&mut self) -> Vec<NameProperty> {
211		std::mem::take(&mut self.r#name)
212	}
213	fn get_potential_action(&self) -> &[PotentialActionProperty] {
214		self.r#potential_action.as_slice()
215	}
216	fn take_potential_action(&mut self) -> Vec<PotentialActionProperty> {
217		std::mem::take(&mut self.r#potential_action)
218	}
219	fn get_same_as(&self) -> &[SameAsProperty] {
220		self.r#same_as.as_slice()
221	}
222	fn take_same_as(&mut self) -> Vec<SameAsProperty> {
223		std::mem::take(&mut self.r#same_as)
224	}
225	fn get_subject_of(&self) -> &[SubjectOfProperty] {
226		self.r#subject_of.as_slice()
227	}
228	fn take_subject_of(&mut self) -> Vec<SubjectOfProperty> {
229		std::mem::take(&mut self.r#subject_of)
230	}
231	fn get_url(&self) -> &[UrlProperty] {
232		self.r#url.as_slice()
233	}
234	fn take_url(&mut self) -> Vec<UrlProperty> {
235		std::mem::take(&mut self.r#url)
236	}
237}
238#[cfg(feature = "serde")]
239mod serde {
240	use std::{fmt, fmt::Formatter};
241
242	use ::serde::{
243		de, de::Visitor, ser::SerializeStruct, Deserialize, Deserializer, Serialize, Serializer,
244	};
245
246	use super::*;
247	impl Serialize for PerformAction {
248		fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
249		where
250			S: Serializer,
251		{
252			let len: usize = [
253				!Vec::is_empty(&self.r#entertainment_business) as usize,
254				!Vec::is_empty(&self.r#action_status) as usize,
255				!Vec::is_empty(&self.r#agent) as usize,
256				!Vec::is_empty(&self.r#end_time) as usize,
257				!Vec::is_empty(&self.r#error) as usize,
258				!Vec::is_empty(&self.r#instrument) as usize,
259				!Vec::is_empty(&self.r#location) as usize,
260				!Vec::is_empty(&self.r#object) as usize,
261				!Vec::is_empty(&self.r#participant) as usize,
262				!Vec::is_empty(&self.r#provider) as usize,
263				!Vec::is_empty(&self.r#result) as usize,
264				!Vec::is_empty(&self.r#start_time) as usize,
265				!Vec::is_empty(&self.r#target) as usize,
266				!Vec::is_empty(&self.r#audience) as usize,
267				!Vec::is_empty(&self.r#event) as usize,
268				!Vec::is_empty(&self.r#additional_type) as usize,
269				!Vec::is_empty(&self.r#alternate_name) as usize,
270				!Vec::is_empty(&self.r#description) as usize,
271				!Vec::is_empty(&self.r#disambiguating_description) as usize,
272				!Vec::is_empty(&self.r#identifier) as usize,
273				!Vec::is_empty(&self.r#image) as usize,
274				!Vec::is_empty(&self.r#main_entity_of_page) as usize,
275				!Vec::is_empty(&self.r#name) as usize,
276				!Vec::is_empty(&self.r#potential_action) as usize,
277				!Vec::is_empty(&self.r#same_as) as usize,
278				!Vec::is_empty(&self.r#subject_of) as usize,
279				!Vec::is_empty(&self.r#url) as usize,
280			]
281			.iter()
282			.sum();
283			let mut serialize_struct =
284				Serializer::serialize_struct(serializer, "PerformAction", len)?;
285			if !Vec::is_empty(&self.r#entertainment_business) {
286				serialize_struct.serialize_field("entertainmentBusiness", {
287					struct SerializeWith<'a>(&'a Vec<EntertainmentBusinessProperty>);
288					impl<'a> Serialize for SerializeWith<'a> {
289						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
290						where
291							S: Serializer,
292						{
293							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
294								self.0, serializer,
295							)
296						}
297					}
298					&SerializeWith(&self.r#entertainment_business)
299				})?;
300			} else {
301				serialize_struct.skip_field("entertainmentBusiness")?;
302			}
303			if !Vec::is_empty(&self.r#action_status) {
304				serialize_struct.serialize_field("actionStatus", {
305					struct SerializeWith<'a>(&'a Vec<ActionStatusProperty>);
306					impl<'a> Serialize for SerializeWith<'a> {
307						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
308						where
309							S: Serializer,
310						{
311							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
312								self.0, serializer,
313							)
314						}
315					}
316					&SerializeWith(&self.r#action_status)
317				})?;
318			} else {
319				serialize_struct.skip_field("actionStatus")?;
320			}
321			if !Vec::is_empty(&self.r#agent) {
322				serialize_struct.serialize_field("agent", {
323					struct SerializeWith<'a>(&'a Vec<AgentProperty>);
324					impl<'a> Serialize for SerializeWith<'a> {
325						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
326						where
327							S: Serializer,
328						{
329							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
330								self.0, serializer,
331							)
332						}
333					}
334					&SerializeWith(&self.r#agent)
335				})?;
336			} else {
337				serialize_struct.skip_field("agent")?;
338			}
339			if !Vec::is_empty(&self.r#end_time) {
340				serialize_struct.serialize_field("endTime", {
341					struct SerializeWith<'a>(&'a Vec<EndTimeProperty>);
342					impl<'a> Serialize for SerializeWith<'a> {
343						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
344						where
345							S: Serializer,
346						{
347							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
348								self.0, serializer,
349							)
350						}
351					}
352					&SerializeWith(&self.r#end_time)
353				})?;
354			} else {
355				serialize_struct.skip_field("endTime")?;
356			}
357			if !Vec::is_empty(&self.r#error) {
358				serialize_struct.serialize_field("error", {
359					struct SerializeWith<'a>(&'a Vec<ErrorProperty>);
360					impl<'a> Serialize for SerializeWith<'a> {
361						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
362						where
363							S: Serializer,
364						{
365							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
366								self.0, serializer,
367							)
368						}
369					}
370					&SerializeWith(&self.r#error)
371				})?;
372			} else {
373				serialize_struct.skip_field("error")?;
374			}
375			if !Vec::is_empty(&self.r#instrument) {
376				serialize_struct.serialize_field("instrument", {
377					struct SerializeWith<'a>(&'a Vec<InstrumentProperty>);
378					impl<'a> Serialize for SerializeWith<'a> {
379						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
380						where
381							S: Serializer,
382						{
383							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
384								self.0, serializer,
385							)
386						}
387					}
388					&SerializeWith(&self.r#instrument)
389				})?;
390			} else {
391				serialize_struct.skip_field("instrument")?;
392			}
393			if !Vec::is_empty(&self.r#location) {
394				serialize_struct.serialize_field("location", {
395					struct SerializeWith<'a>(&'a Vec<LocationProperty>);
396					impl<'a> Serialize for SerializeWith<'a> {
397						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
398						where
399							S: Serializer,
400						{
401							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
402								self.0, serializer,
403							)
404						}
405					}
406					&SerializeWith(&self.r#location)
407				})?;
408			} else {
409				serialize_struct.skip_field("location")?;
410			}
411			if !Vec::is_empty(&self.r#object) {
412				serialize_struct.serialize_field("object", {
413					struct SerializeWith<'a>(&'a Vec<ObjectProperty>);
414					impl<'a> Serialize for SerializeWith<'a> {
415						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
416						where
417							S: Serializer,
418						{
419							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
420								self.0, serializer,
421							)
422						}
423					}
424					&SerializeWith(&self.r#object)
425				})?;
426			} else {
427				serialize_struct.skip_field("object")?;
428			}
429			if !Vec::is_empty(&self.r#participant) {
430				serialize_struct.serialize_field("participant", {
431					struct SerializeWith<'a>(&'a Vec<ParticipantProperty>);
432					impl<'a> Serialize for SerializeWith<'a> {
433						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
434						where
435							S: Serializer,
436						{
437							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
438								self.0, serializer,
439							)
440						}
441					}
442					&SerializeWith(&self.r#participant)
443				})?;
444			} else {
445				serialize_struct.skip_field("participant")?;
446			}
447			if !Vec::is_empty(&self.r#provider) {
448				serialize_struct.serialize_field("provider", {
449					struct SerializeWith<'a>(&'a Vec<ProviderProperty>);
450					impl<'a> Serialize for SerializeWith<'a> {
451						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
452						where
453							S: Serializer,
454						{
455							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
456								self.0, serializer,
457							)
458						}
459					}
460					&SerializeWith(&self.r#provider)
461				})?;
462			} else {
463				serialize_struct.skip_field("provider")?;
464			}
465			if !Vec::is_empty(&self.r#result) {
466				serialize_struct.serialize_field("result", {
467					struct SerializeWith<'a>(&'a Vec<ResultProperty>);
468					impl<'a> Serialize for SerializeWith<'a> {
469						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
470						where
471							S: Serializer,
472						{
473							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
474								self.0, serializer,
475							)
476						}
477					}
478					&SerializeWith(&self.r#result)
479				})?;
480			} else {
481				serialize_struct.skip_field("result")?;
482			}
483			if !Vec::is_empty(&self.r#start_time) {
484				serialize_struct.serialize_field("startTime", {
485					struct SerializeWith<'a>(&'a Vec<StartTimeProperty>);
486					impl<'a> Serialize for SerializeWith<'a> {
487						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
488						where
489							S: Serializer,
490						{
491							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
492								self.0, serializer,
493							)
494						}
495					}
496					&SerializeWith(&self.r#start_time)
497				})?;
498			} else {
499				serialize_struct.skip_field("startTime")?;
500			}
501			if !Vec::is_empty(&self.r#target) {
502				serialize_struct.serialize_field("target", {
503					struct SerializeWith<'a>(&'a Vec<TargetProperty>);
504					impl<'a> Serialize for SerializeWith<'a> {
505						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
506						where
507							S: Serializer,
508						{
509							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
510								self.0, serializer,
511							)
512						}
513					}
514					&SerializeWith(&self.r#target)
515				})?;
516			} else {
517				serialize_struct.skip_field("target")?;
518			}
519			if !Vec::is_empty(&self.r#audience) {
520				serialize_struct.serialize_field("audience", {
521					struct SerializeWith<'a>(&'a Vec<AudienceProperty>);
522					impl<'a> Serialize for SerializeWith<'a> {
523						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
524						where
525							S: Serializer,
526						{
527							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
528								self.0, serializer,
529							)
530						}
531					}
532					&SerializeWith(&self.r#audience)
533				})?;
534			} else {
535				serialize_struct.skip_field("audience")?;
536			}
537			if !Vec::is_empty(&self.r#event) {
538				serialize_struct.serialize_field("event", {
539					struct SerializeWith<'a>(&'a Vec<EventProperty>);
540					impl<'a> Serialize for SerializeWith<'a> {
541						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
542						where
543							S: Serializer,
544						{
545							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
546								self.0, serializer,
547							)
548						}
549					}
550					&SerializeWith(&self.r#event)
551				})?;
552			} else {
553				serialize_struct.skip_field("event")?;
554			}
555			if !Vec::is_empty(&self.r#additional_type) {
556				serialize_struct.serialize_field("additionalType", {
557					struct SerializeWith<'a>(&'a Vec<AdditionalTypeProperty>);
558					impl<'a> Serialize for SerializeWith<'a> {
559						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
560						where
561							S: Serializer,
562						{
563							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
564								self.0, serializer,
565							)
566						}
567					}
568					&SerializeWith(&self.r#additional_type)
569				})?;
570			} else {
571				serialize_struct.skip_field("additionalType")?;
572			}
573			if !Vec::is_empty(&self.r#alternate_name) {
574				serialize_struct.serialize_field("alternateName", {
575					struct SerializeWith<'a>(&'a Vec<AlternateNameProperty>);
576					impl<'a> Serialize for SerializeWith<'a> {
577						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
578						where
579							S: Serializer,
580						{
581							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
582								self.0, serializer,
583							)
584						}
585					}
586					&SerializeWith(&self.r#alternate_name)
587				})?;
588			} else {
589				serialize_struct.skip_field("alternateName")?;
590			}
591			if !Vec::is_empty(&self.r#description) {
592				serialize_struct.serialize_field("description", {
593					struct SerializeWith<'a>(&'a Vec<DescriptionProperty>);
594					impl<'a> Serialize for SerializeWith<'a> {
595						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
596						where
597							S: Serializer,
598						{
599							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
600								self.0, serializer,
601							)
602						}
603					}
604					&SerializeWith(&self.r#description)
605				})?;
606			} else {
607				serialize_struct.skip_field("description")?;
608			}
609			if !Vec::is_empty(&self.r#disambiguating_description) {
610				serialize_struct.serialize_field("disambiguatingDescription", {
611					struct SerializeWith<'a>(&'a Vec<DisambiguatingDescriptionProperty>);
612					impl<'a> Serialize for SerializeWith<'a> {
613						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
614						where
615							S: Serializer,
616						{
617							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
618								self.0, serializer,
619							)
620						}
621					}
622					&SerializeWith(&self.r#disambiguating_description)
623				})?;
624			} else {
625				serialize_struct.skip_field("disambiguatingDescription")?;
626			}
627			if !Vec::is_empty(&self.r#identifier) {
628				serialize_struct.serialize_field("identifier", {
629					struct SerializeWith<'a>(&'a Vec<IdentifierProperty>);
630					impl<'a> Serialize for SerializeWith<'a> {
631						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
632						where
633							S: Serializer,
634						{
635							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
636								self.0, serializer,
637							)
638						}
639					}
640					&SerializeWith(&self.r#identifier)
641				})?;
642			} else {
643				serialize_struct.skip_field("identifier")?;
644			}
645			if !Vec::is_empty(&self.r#image) {
646				serialize_struct.serialize_field("image", {
647					struct SerializeWith<'a>(&'a Vec<ImageProperty>);
648					impl<'a> Serialize for SerializeWith<'a> {
649						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
650						where
651							S: Serializer,
652						{
653							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
654								self.0, serializer,
655							)
656						}
657					}
658					&SerializeWith(&self.r#image)
659				})?;
660			} else {
661				serialize_struct.skip_field("image")?;
662			}
663			if !Vec::is_empty(&self.r#main_entity_of_page) {
664				serialize_struct.serialize_field("mainEntityOfPage", {
665					struct SerializeWith<'a>(&'a Vec<MainEntityOfPageProperty>);
666					impl<'a> Serialize for SerializeWith<'a> {
667						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
668						where
669							S: Serializer,
670						{
671							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
672								self.0, serializer,
673							)
674						}
675					}
676					&SerializeWith(&self.r#main_entity_of_page)
677				})?;
678			} else {
679				serialize_struct.skip_field("mainEntityOfPage")?;
680			}
681			if !Vec::is_empty(&self.r#name) {
682				serialize_struct.serialize_field("name", {
683					struct SerializeWith<'a>(&'a Vec<NameProperty>);
684					impl<'a> Serialize for SerializeWith<'a> {
685						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
686						where
687							S: Serializer,
688						{
689							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
690								self.0, serializer,
691							)
692						}
693					}
694					&SerializeWith(&self.r#name)
695				})?;
696			} else {
697				serialize_struct.skip_field("name")?;
698			}
699			if !Vec::is_empty(&self.r#potential_action) {
700				serialize_struct.serialize_field("potentialAction", {
701					struct SerializeWith<'a>(&'a Vec<PotentialActionProperty>);
702					impl<'a> Serialize for SerializeWith<'a> {
703						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
704						where
705							S: Serializer,
706						{
707							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
708								self.0, serializer,
709							)
710						}
711					}
712					&SerializeWith(&self.r#potential_action)
713				})?;
714			} else {
715				serialize_struct.skip_field("potentialAction")?;
716			}
717			if !Vec::is_empty(&self.r#same_as) {
718				serialize_struct.serialize_field("sameAs", {
719					struct SerializeWith<'a>(&'a Vec<SameAsProperty>);
720					impl<'a> Serialize for SerializeWith<'a> {
721						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
722						where
723							S: Serializer,
724						{
725							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
726								self.0, serializer,
727							)
728						}
729					}
730					&SerializeWith(&self.r#same_as)
731				})?;
732			} else {
733				serialize_struct.skip_field("sameAs")?;
734			}
735			if !Vec::is_empty(&self.r#subject_of) {
736				serialize_struct.serialize_field("subjectOf", {
737					struct SerializeWith<'a>(&'a Vec<SubjectOfProperty>);
738					impl<'a> Serialize for SerializeWith<'a> {
739						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
740						where
741							S: Serializer,
742						{
743							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
744								self.0, serializer,
745							)
746						}
747					}
748					&SerializeWith(&self.r#subject_of)
749				})?;
750			} else {
751				serialize_struct.skip_field("subjectOf")?;
752			}
753			if !Vec::is_empty(&self.r#url) {
754				serialize_struct.serialize_field("url", {
755					struct SerializeWith<'a>(&'a Vec<UrlProperty>);
756					impl<'a> Serialize for SerializeWith<'a> {
757						fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
758						where
759							S: Serializer,
760						{
761							serde_with::As::<serde_with::OneOrMany<serde_with::Same>>::serialize(
762								self.0, serializer,
763							)
764						}
765					}
766					&SerializeWith(&self.r#url)
767				})?;
768			} else {
769				serialize_struct.skip_field("url")?;
770			}
771			serialize_struct.end()
772		}
773	}
774	impl<'de> Deserialize<'de> for PerformAction {
775		fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
776		where
777			D: Deserializer<'de>,
778		{
779			enum Field {
780				EntertainmentBusiness,
781				ActionStatus,
782				Agent,
783				EndTime,
784				Error,
785				Instrument,
786				Location,
787				Object,
788				Participant,
789				Provider,
790				Result,
791				StartTime,
792				Target,
793				Audience,
794				Event,
795				AdditionalType,
796				AlternateName,
797				Description,
798				DisambiguatingDescription,
799				Identifier,
800				Image,
801				MainEntityOfPage,
802				Name,
803				PotentialAction,
804				SameAs,
805				SubjectOf,
806				Url,
807				Ignore,
808			}
809			struct FieldVisitor;
810			impl<'de> Visitor<'de> for FieldVisitor {
811				type Value = Field;
812				fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
813					formatter.write_str("field identifier")
814				}
815				fn visit_str<E>(self, value: &str) -> Result<Self::Value, E>
816				where
817					E: de::Error,
818				{
819					match value {
820						"entertainmentBusiness" => Ok(Field::EntertainmentBusiness),
821						"actionStatus" => Ok(Field::ActionStatus),
822						"agent" => Ok(Field::Agent),
823						"endTime" => Ok(Field::EndTime),
824						"error" => Ok(Field::Error),
825						"instrument" => Ok(Field::Instrument),
826						"location" => Ok(Field::Location),
827						"object" => Ok(Field::Object),
828						"participant" => Ok(Field::Participant),
829						"provider" => Ok(Field::Provider),
830						"result" => Ok(Field::Result),
831						"startTime" => Ok(Field::StartTime),
832						"target" => Ok(Field::Target),
833						"audience" => Ok(Field::Audience),
834						"event" => Ok(Field::Event),
835						"additionalType" => Ok(Field::AdditionalType),
836						"alternateName" => Ok(Field::AlternateName),
837						"description" => Ok(Field::Description),
838						"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
839						"identifier" => Ok(Field::Identifier),
840						"image" => Ok(Field::Image),
841						"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
842						"name" => Ok(Field::Name),
843						"potentialAction" => Ok(Field::PotentialAction),
844						"sameAs" => Ok(Field::SameAs),
845						"subjectOf" => Ok(Field::SubjectOf),
846						"url" => Ok(Field::Url),
847						"id" | "type" => Ok(Field::Ignore),
848						_ => Err(de::Error::unknown_field(value, FIELDS)),
849					}
850				}
851				fn visit_bytes<E>(self, value: &[u8]) -> Result<Self::Value, E>
852				where
853					E: de::Error,
854				{
855					match value {
856						b"entertainmentBusiness" => Ok(Field::EntertainmentBusiness),
857						b"actionStatus" => Ok(Field::ActionStatus),
858						b"agent" => Ok(Field::Agent),
859						b"endTime" => Ok(Field::EndTime),
860						b"error" => Ok(Field::Error),
861						b"instrument" => Ok(Field::Instrument),
862						b"location" => Ok(Field::Location),
863						b"object" => Ok(Field::Object),
864						b"participant" => Ok(Field::Participant),
865						b"provider" => Ok(Field::Provider),
866						b"result" => Ok(Field::Result),
867						b"startTime" => Ok(Field::StartTime),
868						b"target" => Ok(Field::Target),
869						b"audience" => Ok(Field::Audience),
870						b"event" => Ok(Field::Event),
871						b"additionalType" => Ok(Field::AdditionalType),
872						b"alternateName" => Ok(Field::AlternateName),
873						b"description" => Ok(Field::Description),
874						b"disambiguatingDescription" => Ok(Field::DisambiguatingDescription),
875						b"identifier" => Ok(Field::Identifier),
876						b"image" => Ok(Field::Image),
877						b"mainEntityOfPage" => Ok(Field::MainEntityOfPage),
878						b"name" => Ok(Field::Name),
879						b"potentialAction" => Ok(Field::PotentialAction),
880						b"sameAs" => Ok(Field::SameAs),
881						b"subjectOf" => Ok(Field::SubjectOf),
882						b"url" => Ok(Field::Url),
883						b"id" | b"type" => Ok(Field::Ignore),
884						_ => {
885							let value = &String::from_utf8_lossy(value);
886							Err(de::Error::unknown_field(value, FIELDS))
887						}
888					}
889				}
890			}
891			impl<'de> Deserialize<'de> for Field {
892				fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
893				where
894					D: Deserializer<'de>,
895				{
896					deserializer.deserialize_identifier(FieldVisitor)
897				}
898			}
899			struct ClassVisitor;
900			impl<'de> Visitor<'de> for ClassVisitor {
901				type Value = PerformAction;
902				fn expecting(&self, formatter: &mut Formatter) -> fmt::Result {
903					formatter.write_str("schema.org schema PerformAction")
904				}
905				fn visit_map<A>(self, mut map: A) -> Result<Self::Value, A::Error>
906				where
907					A: de::MapAccess<'de>,
908				{
909					let mut r#entertainment_business_property = None;
910					let mut r#action_status_property = None;
911					let mut r#agent_property = None;
912					let mut r#end_time_property = None;
913					let mut r#error_property = None;
914					let mut r#instrument_property = None;
915					let mut r#location_property = None;
916					let mut r#object_property = None;
917					let mut r#participant_property = None;
918					let mut r#provider_property = None;
919					let mut r#result_property = None;
920					let mut r#start_time_property = None;
921					let mut r#target_property = None;
922					let mut r#audience_property = None;
923					let mut r#event_property = None;
924					let mut r#additional_type_property = None;
925					let mut r#alternate_name_property = None;
926					let mut r#description_property = None;
927					let mut r#disambiguating_description_property = None;
928					let mut r#identifier_property = None;
929					let mut r#image_property = None;
930					let mut r#main_entity_of_page_property = None;
931					let mut r#name_property = None;
932					let mut r#potential_action_property = None;
933					let mut r#same_as_property = None;
934					let mut r#subject_of_property = None;
935					let mut r#url_property = None;
936					while let Some(key) = map.next_key::<Field>()? {
937						match key {
938							Field::EntertainmentBusiness => {
939								if r#entertainment_business_property.is_some() {
940									return Err(<A::Error as de::Error>::duplicate_field(
941										"entertainmentBusiness",
942									));
943								}
944								r#entertainment_business_property = Some({
945									struct DeserializeWith(Vec<EntertainmentBusinessProperty>);
946									impl<'de> Deserialize<'de> for DeserializeWith {
947										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
948										where
949											D: Deserializer<'de>,
950										{
951											Ok(DeserializeWith(serde_with::As::<
952												serde_with::OneOrMany<serde_with::Same>,
953											>::deserialize(deserializer)?))
954										}
955									}
956									match map.next_value::<DeserializeWith>() {
957										Ok(deserialize_with) => deserialize_with.0,
958										Err(err) => {
959											return Err(err);
960										}
961									}
962								});
963							}
964							Field::ActionStatus => {
965								if r#action_status_property.is_some() {
966									return Err(<A::Error as de::Error>::duplicate_field(
967										"actionStatus",
968									));
969								}
970								r#action_status_property = Some({
971									struct DeserializeWith(Vec<ActionStatusProperty>);
972									impl<'de> Deserialize<'de> for DeserializeWith {
973										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
974										where
975											D: Deserializer<'de>,
976										{
977											Ok(DeserializeWith(serde_with::As::<
978												serde_with::OneOrMany<serde_with::Same>,
979											>::deserialize(deserializer)?))
980										}
981									}
982									match map.next_value::<DeserializeWith>() {
983										Ok(deserialize_with) => deserialize_with.0,
984										Err(err) => {
985											return Err(err);
986										}
987									}
988								});
989							}
990							Field::Agent => {
991								if r#agent_property.is_some() {
992									return Err(<A::Error as de::Error>::duplicate_field("agent"));
993								}
994								r#agent_property = Some({
995									struct DeserializeWith(Vec<AgentProperty>);
996									impl<'de> Deserialize<'de> for DeserializeWith {
997										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
998										where
999											D: Deserializer<'de>,
1000										{
1001											Ok(DeserializeWith(serde_with::As::<
1002												serde_with::OneOrMany<serde_with::Same>,
1003											>::deserialize(deserializer)?))
1004										}
1005									}
1006									match map.next_value::<DeserializeWith>() {
1007										Ok(deserialize_with) => deserialize_with.0,
1008										Err(err) => {
1009											return Err(err);
1010										}
1011									}
1012								});
1013							}
1014							Field::EndTime => {
1015								if r#end_time_property.is_some() {
1016									return Err(<A::Error as de::Error>::duplicate_field(
1017										"endTime",
1018									));
1019								}
1020								r#end_time_property = Some({
1021									struct DeserializeWith(Vec<EndTimeProperty>);
1022									impl<'de> Deserialize<'de> for DeserializeWith {
1023										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1024										where
1025											D: Deserializer<'de>,
1026										{
1027											Ok(DeserializeWith(serde_with::As::<
1028												serde_with::OneOrMany<serde_with::Same>,
1029											>::deserialize(deserializer)?))
1030										}
1031									}
1032									match map.next_value::<DeserializeWith>() {
1033										Ok(deserialize_with) => deserialize_with.0,
1034										Err(err) => {
1035											return Err(err);
1036										}
1037									}
1038								});
1039							}
1040							Field::Error => {
1041								if r#error_property.is_some() {
1042									return Err(<A::Error as de::Error>::duplicate_field("error"));
1043								}
1044								r#error_property = Some({
1045									struct DeserializeWith(Vec<ErrorProperty>);
1046									impl<'de> Deserialize<'de> for DeserializeWith {
1047										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1048										where
1049											D: Deserializer<'de>,
1050										{
1051											Ok(DeserializeWith(serde_with::As::<
1052												serde_with::OneOrMany<serde_with::Same>,
1053											>::deserialize(deserializer)?))
1054										}
1055									}
1056									match map.next_value::<DeserializeWith>() {
1057										Ok(deserialize_with) => deserialize_with.0,
1058										Err(err) => {
1059											return Err(err);
1060										}
1061									}
1062								});
1063							}
1064							Field::Instrument => {
1065								if r#instrument_property.is_some() {
1066									return Err(<A::Error as de::Error>::duplicate_field(
1067										"instrument",
1068									));
1069								}
1070								r#instrument_property = Some({
1071									struct DeserializeWith(Vec<InstrumentProperty>);
1072									impl<'de> Deserialize<'de> for DeserializeWith {
1073										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1074										where
1075											D: Deserializer<'de>,
1076										{
1077											Ok(DeserializeWith(serde_with::As::<
1078												serde_with::OneOrMany<serde_with::Same>,
1079											>::deserialize(deserializer)?))
1080										}
1081									}
1082									match map.next_value::<DeserializeWith>() {
1083										Ok(deserialize_with) => deserialize_with.0,
1084										Err(err) => {
1085											return Err(err);
1086										}
1087									}
1088								});
1089							}
1090							Field::Location => {
1091								if r#location_property.is_some() {
1092									return Err(<A::Error as de::Error>::duplicate_field(
1093										"location",
1094									));
1095								}
1096								r#location_property = Some({
1097									struct DeserializeWith(Vec<LocationProperty>);
1098									impl<'de> Deserialize<'de> for DeserializeWith {
1099										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1100										where
1101											D: Deserializer<'de>,
1102										{
1103											Ok(DeserializeWith(serde_with::As::<
1104												serde_with::OneOrMany<serde_with::Same>,
1105											>::deserialize(deserializer)?))
1106										}
1107									}
1108									match map.next_value::<DeserializeWith>() {
1109										Ok(deserialize_with) => deserialize_with.0,
1110										Err(err) => {
1111											return Err(err);
1112										}
1113									}
1114								});
1115							}
1116							Field::Object => {
1117								if r#object_property.is_some() {
1118									return Err(<A::Error as de::Error>::duplicate_field("object"));
1119								}
1120								r#object_property = Some({
1121									struct DeserializeWith(Vec<ObjectProperty>);
1122									impl<'de> Deserialize<'de> for DeserializeWith {
1123										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1124										where
1125											D: Deserializer<'de>,
1126										{
1127											Ok(DeserializeWith(serde_with::As::<
1128												serde_with::OneOrMany<serde_with::Same>,
1129											>::deserialize(deserializer)?))
1130										}
1131									}
1132									match map.next_value::<DeserializeWith>() {
1133										Ok(deserialize_with) => deserialize_with.0,
1134										Err(err) => {
1135											return Err(err);
1136										}
1137									}
1138								});
1139							}
1140							Field::Participant => {
1141								if r#participant_property.is_some() {
1142									return Err(<A::Error as de::Error>::duplicate_field(
1143										"participant",
1144									));
1145								}
1146								r#participant_property = Some({
1147									struct DeserializeWith(Vec<ParticipantProperty>);
1148									impl<'de> Deserialize<'de> for DeserializeWith {
1149										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1150										where
1151											D: Deserializer<'de>,
1152										{
1153											Ok(DeserializeWith(serde_with::As::<
1154												serde_with::OneOrMany<serde_with::Same>,
1155											>::deserialize(deserializer)?))
1156										}
1157									}
1158									match map.next_value::<DeserializeWith>() {
1159										Ok(deserialize_with) => deserialize_with.0,
1160										Err(err) => {
1161											return Err(err);
1162										}
1163									}
1164								});
1165							}
1166							Field::Provider => {
1167								if r#provider_property.is_some() {
1168									return Err(<A::Error as de::Error>::duplicate_field(
1169										"provider",
1170									));
1171								}
1172								r#provider_property = Some({
1173									struct DeserializeWith(Vec<ProviderProperty>);
1174									impl<'de> Deserialize<'de> for DeserializeWith {
1175										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1176										where
1177											D: Deserializer<'de>,
1178										{
1179											Ok(DeserializeWith(serde_with::As::<
1180												serde_with::OneOrMany<serde_with::Same>,
1181											>::deserialize(deserializer)?))
1182										}
1183									}
1184									match map.next_value::<DeserializeWith>() {
1185										Ok(deserialize_with) => deserialize_with.0,
1186										Err(err) => {
1187											return Err(err);
1188										}
1189									}
1190								});
1191							}
1192							Field::Result => {
1193								if r#result_property.is_some() {
1194									return Err(<A::Error as de::Error>::duplicate_field("result"));
1195								}
1196								r#result_property = Some({
1197									struct DeserializeWith(Vec<ResultProperty>);
1198									impl<'de> Deserialize<'de> for DeserializeWith {
1199										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1200										where
1201											D: Deserializer<'de>,
1202										{
1203											Ok(DeserializeWith(serde_with::As::<
1204												serde_with::OneOrMany<serde_with::Same>,
1205											>::deserialize(deserializer)?))
1206										}
1207									}
1208									match map.next_value::<DeserializeWith>() {
1209										Ok(deserialize_with) => deserialize_with.0,
1210										Err(err) => {
1211											return Err(err);
1212										}
1213									}
1214								});
1215							}
1216							Field::StartTime => {
1217								if r#start_time_property.is_some() {
1218									return Err(<A::Error as de::Error>::duplicate_field(
1219										"startTime",
1220									));
1221								}
1222								r#start_time_property = Some({
1223									struct DeserializeWith(Vec<StartTimeProperty>);
1224									impl<'de> Deserialize<'de> for DeserializeWith {
1225										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1226										where
1227											D: Deserializer<'de>,
1228										{
1229											Ok(DeserializeWith(serde_with::As::<
1230												serde_with::OneOrMany<serde_with::Same>,
1231											>::deserialize(deserializer)?))
1232										}
1233									}
1234									match map.next_value::<DeserializeWith>() {
1235										Ok(deserialize_with) => deserialize_with.0,
1236										Err(err) => {
1237											return Err(err);
1238										}
1239									}
1240								});
1241							}
1242							Field::Target => {
1243								if r#target_property.is_some() {
1244									return Err(<A::Error as de::Error>::duplicate_field("target"));
1245								}
1246								r#target_property = Some({
1247									struct DeserializeWith(Vec<TargetProperty>);
1248									impl<'de> Deserialize<'de> for DeserializeWith {
1249										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1250										where
1251											D: Deserializer<'de>,
1252										{
1253											Ok(DeserializeWith(serde_with::As::<
1254												serde_with::OneOrMany<serde_with::Same>,
1255											>::deserialize(deserializer)?))
1256										}
1257									}
1258									match map.next_value::<DeserializeWith>() {
1259										Ok(deserialize_with) => deserialize_with.0,
1260										Err(err) => {
1261											return Err(err);
1262										}
1263									}
1264								});
1265							}
1266							Field::Audience => {
1267								if r#audience_property.is_some() {
1268									return Err(<A::Error as de::Error>::duplicate_field(
1269										"audience",
1270									));
1271								}
1272								r#audience_property = Some({
1273									struct DeserializeWith(Vec<AudienceProperty>);
1274									impl<'de> Deserialize<'de> for DeserializeWith {
1275										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1276										where
1277											D: Deserializer<'de>,
1278										{
1279											Ok(DeserializeWith(serde_with::As::<
1280												serde_with::OneOrMany<serde_with::Same>,
1281											>::deserialize(deserializer)?))
1282										}
1283									}
1284									match map.next_value::<DeserializeWith>() {
1285										Ok(deserialize_with) => deserialize_with.0,
1286										Err(err) => {
1287											return Err(err);
1288										}
1289									}
1290								});
1291							}
1292							Field::Event => {
1293								if r#event_property.is_some() {
1294									return Err(<A::Error as de::Error>::duplicate_field("event"));
1295								}
1296								r#event_property = Some({
1297									struct DeserializeWith(Vec<EventProperty>);
1298									impl<'de> Deserialize<'de> for DeserializeWith {
1299										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1300										where
1301											D: Deserializer<'de>,
1302										{
1303											Ok(DeserializeWith(serde_with::As::<
1304												serde_with::OneOrMany<serde_with::Same>,
1305											>::deserialize(deserializer)?))
1306										}
1307									}
1308									match map.next_value::<DeserializeWith>() {
1309										Ok(deserialize_with) => deserialize_with.0,
1310										Err(err) => {
1311											return Err(err);
1312										}
1313									}
1314								});
1315							}
1316							Field::AdditionalType => {
1317								if r#additional_type_property.is_some() {
1318									return Err(<A::Error as de::Error>::duplicate_field(
1319										"additionalType",
1320									));
1321								}
1322								r#additional_type_property = Some({
1323									struct DeserializeWith(Vec<AdditionalTypeProperty>);
1324									impl<'de> Deserialize<'de> for DeserializeWith {
1325										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1326										where
1327											D: Deserializer<'de>,
1328										{
1329											Ok(DeserializeWith(serde_with::As::<
1330												serde_with::OneOrMany<serde_with::Same>,
1331											>::deserialize(deserializer)?))
1332										}
1333									}
1334									match map.next_value::<DeserializeWith>() {
1335										Ok(deserialize_with) => deserialize_with.0,
1336										Err(err) => {
1337											return Err(err);
1338										}
1339									}
1340								});
1341							}
1342							Field::AlternateName => {
1343								if r#alternate_name_property.is_some() {
1344									return Err(<A::Error as de::Error>::duplicate_field(
1345										"alternateName",
1346									));
1347								}
1348								r#alternate_name_property = Some({
1349									struct DeserializeWith(Vec<AlternateNameProperty>);
1350									impl<'de> Deserialize<'de> for DeserializeWith {
1351										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1352										where
1353											D: Deserializer<'de>,
1354										{
1355											Ok(DeserializeWith(serde_with::As::<
1356												serde_with::OneOrMany<serde_with::Same>,
1357											>::deserialize(deserializer)?))
1358										}
1359									}
1360									match map.next_value::<DeserializeWith>() {
1361										Ok(deserialize_with) => deserialize_with.0,
1362										Err(err) => {
1363											return Err(err);
1364										}
1365									}
1366								});
1367							}
1368							Field::Description => {
1369								if r#description_property.is_some() {
1370									return Err(<A::Error as de::Error>::duplicate_field(
1371										"description",
1372									));
1373								}
1374								r#description_property = Some({
1375									struct DeserializeWith(Vec<DescriptionProperty>);
1376									impl<'de> Deserialize<'de> for DeserializeWith {
1377										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1378										where
1379											D: Deserializer<'de>,
1380										{
1381											Ok(DeserializeWith(serde_with::As::<
1382												serde_with::OneOrMany<serde_with::Same>,
1383											>::deserialize(deserializer)?))
1384										}
1385									}
1386									match map.next_value::<DeserializeWith>() {
1387										Ok(deserialize_with) => deserialize_with.0,
1388										Err(err) => {
1389											return Err(err);
1390										}
1391									}
1392								});
1393							}
1394							Field::DisambiguatingDescription => {
1395								if r#disambiguating_description_property.is_some() {
1396									return Err(<A::Error as de::Error>::duplicate_field(
1397										"disambiguatingDescription",
1398									));
1399								}
1400								r#disambiguating_description_property = Some({
1401									struct DeserializeWith(Vec<DisambiguatingDescriptionProperty>);
1402									impl<'de> Deserialize<'de> for DeserializeWith {
1403										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1404										where
1405											D: Deserializer<'de>,
1406										{
1407											Ok(DeserializeWith(serde_with::As::<
1408												serde_with::OneOrMany<serde_with::Same>,
1409											>::deserialize(deserializer)?))
1410										}
1411									}
1412									match map.next_value::<DeserializeWith>() {
1413										Ok(deserialize_with) => deserialize_with.0,
1414										Err(err) => {
1415											return Err(err);
1416										}
1417									}
1418								});
1419							}
1420							Field::Identifier => {
1421								if r#identifier_property.is_some() {
1422									return Err(<A::Error as de::Error>::duplicate_field(
1423										"identifier",
1424									));
1425								}
1426								r#identifier_property = Some({
1427									struct DeserializeWith(Vec<IdentifierProperty>);
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::Image => {
1447								if r#image_property.is_some() {
1448									return Err(<A::Error as de::Error>::duplicate_field("image"));
1449								}
1450								r#image_property = Some({
1451									struct DeserializeWith(Vec<ImageProperty>);
1452									impl<'de> Deserialize<'de> for DeserializeWith {
1453										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1454										where
1455											D: Deserializer<'de>,
1456										{
1457											Ok(DeserializeWith(serde_with::As::<
1458												serde_with::OneOrMany<serde_with::Same>,
1459											>::deserialize(deserializer)?))
1460										}
1461									}
1462									match map.next_value::<DeserializeWith>() {
1463										Ok(deserialize_with) => deserialize_with.0,
1464										Err(err) => {
1465											return Err(err);
1466										}
1467									}
1468								});
1469							}
1470							Field::MainEntityOfPage => {
1471								if r#main_entity_of_page_property.is_some() {
1472									return Err(<A::Error as de::Error>::duplicate_field(
1473										"mainEntityOfPage",
1474									));
1475								}
1476								r#main_entity_of_page_property = Some({
1477									struct DeserializeWith(Vec<MainEntityOfPageProperty>);
1478									impl<'de> Deserialize<'de> for DeserializeWith {
1479										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1480										where
1481											D: Deserializer<'de>,
1482										{
1483											Ok(DeserializeWith(serde_with::As::<
1484												serde_with::OneOrMany<serde_with::Same>,
1485											>::deserialize(deserializer)?))
1486										}
1487									}
1488									match map.next_value::<DeserializeWith>() {
1489										Ok(deserialize_with) => deserialize_with.0,
1490										Err(err) => {
1491											return Err(err);
1492										}
1493									}
1494								});
1495							}
1496							Field::Name => {
1497								if r#name_property.is_some() {
1498									return Err(<A::Error as de::Error>::duplicate_field("name"));
1499								}
1500								r#name_property = Some({
1501									struct DeserializeWith(Vec<NameProperty>);
1502									impl<'de> Deserialize<'de> for DeserializeWith {
1503										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1504										where
1505											D: Deserializer<'de>,
1506										{
1507											Ok(DeserializeWith(serde_with::As::<
1508												serde_with::OneOrMany<serde_with::Same>,
1509											>::deserialize(deserializer)?))
1510										}
1511									}
1512									match map.next_value::<DeserializeWith>() {
1513										Ok(deserialize_with) => deserialize_with.0,
1514										Err(err) => {
1515											return Err(err);
1516										}
1517									}
1518								});
1519							}
1520							Field::PotentialAction => {
1521								if r#potential_action_property.is_some() {
1522									return Err(<A::Error as de::Error>::duplicate_field(
1523										"potentialAction",
1524									));
1525								}
1526								r#potential_action_property = Some({
1527									struct DeserializeWith(Vec<PotentialActionProperty>);
1528									impl<'de> Deserialize<'de> for DeserializeWith {
1529										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1530										where
1531											D: Deserializer<'de>,
1532										{
1533											Ok(DeserializeWith(serde_with::As::<
1534												serde_with::OneOrMany<serde_with::Same>,
1535											>::deserialize(deserializer)?))
1536										}
1537									}
1538									match map.next_value::<DeserializeWith>() {
1539										Ok(deserialize_with) => deserialize_with.0,
1540										Err(err) => {
1541											return Err(err);
1542										}
1543									}
1544								});
1545							}
1546							Field::SameAs => {
1547								if r#same_as_property.is_some() {
1548									return Err(<A::Error as de::Error>::duplicate_field("sameAs"));
1549								}
1550								r#same_as_property = Some({
1551									struct DeserializeWith(Vec<SameAsProperty>);
1552									impl<'de> Deserialize<'de> for DeserializeWith {
1553										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1554										where
1555											D: Deserializer<'de>,
1556										{
1557											Ok(DeserializeWith(serde_with::As::<
1558												serde_with::OneOrMany<serde_with::Same>,
1559											>::deserialize(deserializer)?))
1560										}
1561									}
1562									match map.next_value::<DeserializeWith>() {
1563										Ok(deserialize_with) => deserialize_with.0,
1564										Err(err) => {
1565											return Err(err);
1566										}
1567									}
1568								});
1569							}
1570							Field::SubjectOf => {
1571								if r#subject_of_property.is_some() {
1572									return Err(<A::Error as de::Error>::duplicate_field(
1573										"subjectOf",
1574									));
1575								}
1576								r#subject_of_property = Some({
1577									struct DeserializeWith(Vec<SubjectOfProperty>);
1578									impl<'de> Deserialize<'de> for DeserializeWith {
1579										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1580										where
1581											D: Deserializer<'de>,
1582										{
1583											Ok(DeserializeWith(serde_with::As::<
1584												serde_with::OneOrMany<serde_with::Same>,
1585											>::deserialize(deserializer)?))
1586										}
1587									}
1588									match map.next_value::<DeserializeWith>() {
1589										Ok(deserialize_with) => deserialize_with.0,
1590										Err(err) => {
1591											return Err(err);
1592										}
1593									}
1594								});
1595							}
1596							Field::Url => {
1597								if r#url_property.is_some() {
1598									return Err(<A::Error as de::Error>::duplicate_field("url"));
1599								}
1600								r#url_property = Some({
1601									struct DeserializeWith(Vec<UrlProperty>);
1602									impl<'de> Deserialize<'de> for DeserializeWith {
1603										fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
1604										where
1605											D: Deserializer<'de>,
1606										{
1607											Ok(DeserializeWith(serde_with::As::<
1608												serde_with::OneOrMany<serde_with::Same>,
1609											>::deserialize(deserializer)?))
1610										}
1611									}
1612									match map.next_value::<DeserializeWith>() {
1613										Ok(deserialize_with) => deserialize_with.0,
1614										Err(err) => {
1615											return Err(err);
1616										}
1617									}
1618								});
1619							}
1620							Field::Ignore => {
1621								let _ = map.next_value::<de::IgnoredAny>()?;
1622							}
1623						}
1624					}
1625					Ok(PerformAction {
1626						r#entertainment_business: r#entertainment_business_property
1627							.unwrap_or_default(),
1628						r#action_status: r#action_status_property.unwrap_or_default(),
1629						r#agent: r#agent_property.unwrap_or_default(),
1630						r#end_time: r#end_time_property.unwrap_or_default(),
1631						r#error: r#error_property.unwrap_or_default(),
1632						r#instrument: r#instrument_property.unwrap_or_default(),
1633						r#location: r#location_property.unwrap_or_default(),
1634						r#object: r#object_property.unwrap_or_default(),
1635						r#participant: r#participant_property.unwrap_or_default(),
1636						r#provider: r#provider_property.unwrap_or_default(),
1637						r#result: r#result_property.unwrap_or_default(),
1638						r#start_time: r#start_time_property.unwrap_or_default(),
1639						r#target: r#target_property.unwrap_or_default(),
1640						r#audience: r#audience_property.unwrap_or_default(),
1641						r#event: r#event_property.unwrap_or_default(),
1642						r#additional_type: r#additional_type_property.unwrap_or_default(),
1643						r#alternate_name: r#alternate_name_property.unwrap_or_default(),
1644						r#description: r#description_property.unwrap_or_default(),
1645						r#disambiguating_description: r#disambiguating_description_property
1646							.unwrap_or_default(),
1647						r#identifier: r#identifier_property.unwrap_or_default(),
1648						r#image: r#image_property.unwrap_or_default(),
1649						r#main_entity_of_page: r#main_entity_of_page_property.unwrap_or_default(),
1650						r#name: r#name_property.unwrap_or_default(),
1651						r#potential_action: r#potential_action_property.unwrap_or_default(),
1652						r#same_as: r#same_as_property.unwrap_or_default(),
1653						r#subject_of: r#subject_of_property.unwrap_or_default(),
1654						r#url: r#url_property.unwrap_or_default(),
1655					})
1656				}
1657			}
1658			const FIELDS: &[&str] = &[
1659				"entertainmentBusiness",
1660				"actionStatus",
1661				"agent",
1662				"endTime",
1663				"error",
1664				"instrument",
1665				"location",
1666				"object",
1667				"participant",
1668				"provider",
1669				"result",
1670				"startTime",
1671				"target",
1672				"audience",
1673				"event",
1674				"additionalType",
1675				"alternateName",
1676				"description",
1677				"disambiguatingDescription",
1678				"identifier",
1679				"image",
1680				"mainEntityOfPage",
1681				"name",
1682				"potentialAction",
1683				"sameAs",
1684				"subjectOf",
1685				"url",
1686			];
1687			deserializer.deserialize_struct("PerformAction", FIELDS, ClassVisitor)
1688		}
1689	}
1690}