/**
  * Serialize the Enum object to xml.
  *
  * @param XmlSerializationVisitor $visitor The visitor
  * @param EnumInterface           $data    A EnumInterface instance
  * @param array                   $type    The type parameters
  *
  * @return \DOMCdataSection
  */
 public function serializeEnumToXml(XmlSerializationVisitor $visitor, EnumInterface $data, array $type)
 {
     if ($visitor->document === null) {
         $visitor->document = $visitor->createDocument(null, null, true);
         $visitor->getCurrentNode()->appendChild($node = $visitor->document->createCDATASection($data->getValue()));
         return $node;
     }
     return $visitor->document->createCDATASection($data->getValue());
 }
 /**
  * Transforms enumeration object to the raw value.
  *
  * @param EnumInterface|null $value An EnumInterface instance
  *
  * @return mixed A scalar value
  *
  * @throws UnexpectedTypeException When $value is not valid type
  */
 public function transform($value)
 {
     if ($value === null) {
         return null;
     }
     if (!$value instanceof $this->enumClass) {
         throw new UnexpectedTypeException($value, $this->enumClass);
     }
     return $value->getValue();
 }