+ end
+
+ redef fun core_serialize_to(serializer)
+ do
+ serializer.serialize_attribute("poset", poset)
+ serializer.serialize_attribute("element", element)
+ serializer.serialize_attribute("tos", tos)
+ serializer.serialize_attribute("froms", froms)
+ serializer.serialize_attribute("dtos", dtos)
+ serializer.serialize_attribute("dfroms", dfroms)
+ serializer.serialize_attribute("count", count)
+
+ # Don't serialize `froms`, `dtos` and `tos` as they duplicate information.
+ # TODO serialize them if a flag for extra info is set on `serializer`.
+ end
+
+ redef init from_deserializer(v)
+ do
+ # Code generated by the serialization_phase from the compiler frontend,
+ # copied here for compatibility with nith.
+
+ super
+ v.notify_of_creation self
+
+ var poset = v.deserialize_attribute("poset", "POSet[nullable Object]")
+ if v.deserialize_attribute_missing then
+ v.errors.add new Error("Deserialization Error: attribute `{class_name}::poset` missing from JSON object")
+ else if not poset isa POSet[E] then
+ v.errors.add new AttributeTypeError(self, "poset", poset, "POSet[nullable Object]")
+ if v.keep_going == false then return
+ else
+ self.poset = poset
+ end
+
+ var element = v.deserialize_attribute("element", "nullable Object")
+ if v.deserialize_attribute_missing then
+ v.errors.add new Error("Deserialization Error: attribute `{class_name}::element` missing from JSON object")
+ else if not element isa E then
+ v.errors.add new AttributeTypeError(self, "element", element, "nullable Object")
+ if v.keep_going == false then return
+ else
+ self.element = element
+ end
+
+ var tos = v.deserialize_attribute("tos", "HashSet[nullable Object]")
+ if v.deserialize_attribute_missing then
+ else if not tos isa HashSet[E] then
+ v.errors.add new AttributeTypeError(self, "tos", tos, "HashSet[nullable Object]")
+ if v.keep_going == false then return
+ else
+ self.tos = tos
+ end
+
+ var froms = v.deserialize_attribute("froms", "HashSet[nullable Object]")
+ if v.deserialize_attribute_missing then
+ else if not froms isa HashSet[E] then
+ v.errors.add new AttributeTypeError(self, "froms", froms, "HashSet[nullable Object]")
+ if v.keep_going == false then return
+ else
+ self.froms = froms
+ end
+
+ var dtos = v.deserialize_attribute("dtos", "HashSet[nullable Object]")
+ if v.deserialize_attribute_missing then
+ else if not dtos isa HashSet[E] then
+ v.errors.add new AttributeTypeError(self, "dtos", dtos, "HashSet[nullable Object]")
+ if v.keep_going == false then return
+ else
+ self.dtos = dtos
+ end