/**
  * @param ContextInterface $context
  */
 private function convertContext(ContextInterface $context)
 {
     $newContext = [];
     foreach ($context->getAttributes() as $key => $value) {
         $newContext[$key] = $value;
     }
     if ($context instanceof GroupableContextInterface) {
         $newContext['groups'] = $context->getGroups();
     }
     if ($context instanceof VersionableContextInterface) {
         $newContext['version'] = $context->getVersion();
     }
     if ($context instanceof MaxDepthContextInterface) {
         $newContext['maxDepth'] = $context->getMaxDepth();
     }
     return $newContext;
 }
 /**
  * Fill a jms context.
  *
  * @param ContextInterface $context
  * @param JMSContext       $newContext
  *
  * @return JMSContext
  */
 private function fillContext(ContextInterface $context, JMSContext $newContext)
 {
     foreach ($context->getAttributes() as $key => $value) {
         $newContext->attributes->set($key, $value);
     }
     if ($context instanceof VersionableContextInterface && null !== $context->getVersion()) {
         $newContext->setVersion($context->getVersion());
     }
     if ($context instanceof GroupableContextInterface) {
         $groups = $context->getGroups();
         if (!empty($groups)) {
             $newContext->setGroups($context->getGroups());
         }
     }
     if ($context instanceof MaxDepthContextInterface && null !== $context->getMaxDepth()) {
         $newContext->enableMaxDepthChecks();
     }
     if ($context instanceof SerializeNullContextInterface && null !== $context->getSerializeNull()) {
         $newContext->setSerializeNull($context->getSerializeNull());
     }
     return $newContext;
 }
 /**
  * @param ContextInterface $context
  * @param array            $options
  *
  * @return ContextInterface
  */
 protected function configureDeserializationContext(ContextInterface $context, array $options)
 {
     foreach ($options as $key => $value) {
         if ($key == 'groups' && $context instanceof GroupableContextInterface) {
             $context->addGroups($options['groups']);
         } elseif ($key == 'version' && $context instanceof VersionableContextInterface) {
             $context->setVersion($options['version']);
         } elseif ($key == 'maxDepth' && $context instanceof MaxDepthContextInterface) {
             $context->setMaxDepth($options['maxDepth']);
         } elseif ($key == 'serializeNull' && $context instanceof SerializeNullContextInterface) {
             $context->setSerializeNull($options['serializeNull']);
         } else {
             $context->setAttribute($key, $value);
         }
     }
     return $context;
 }