schema_org_types/schemas/classes/
floor_plan.rs

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