/**
  * @test
  */
 public function itCanDeserializeToAnAssociativeArray()
 {
     $jsonString = new StringLiteral('{"key1":"value1","key2":{"key3":"value3"}}');
     $actualArray = $this->assocDeserializer->deserialize($jsonString);
     $expectedArray = $this->createExpectedArray();
     $this->assertEquals($expectedArray, $actualArray);
 }
 /**
  * @param StringLiteral $json
  * @return ActorCreated
  */
 public function deserialize(StringLiteral $json)
 {
     $json = parent::deserialize($json);
     if (!isset($json->actorId)) {
         throw new MissingValueException('actorId is missing');
     }
     if (!isset($json->time)) {
         throw new MissingValueException('time is missing');
     }
     if (!isset($json->author)) {
         throw new MissingValueException('author is missing');
     }
     if (!isset($json->url)) {
         throw new MissingValueException('url is missing');
     }
     return ActorCreated::deserialize((array) $json);
 }
 /**
  * @inheritdoc
  */
 public function deserialize(StringLiteral $data)
 {
     $data = parent::deserialize($data);
     $payloadClass = $this->payloadClass;
     return new DomainMessage($data['id'], $data['playhead'], Metadata::deserialize($data['metadata']), $payloadClass::deserialize($data['payload']), DateTime::fromString($data['recorded_on']));
 }