/**
  * @param PayloadInterface $payload
  *
  * @return array The serialized payload data
  */
 public function serialize(PayloadInterface $payload)
 {
     if ($payload instanceof AdvancedSerializeInterface) {
         $payload->beforeSerialize($this->serializer);
     }
     $serializedPayload = $this->serializer->serialize($payload, 'json');
     if (!$serializedPayload || !is_string($serializedPayload)) {
         throw new \RuntimeException(sprintf('Failed to serialize payload; expected it to be a string, got: %s', var_export($serializedPayload, true)));
     }
     return json_decode($serializedPayload, true);
 }