/**
  * @param ModelTransformerInterface $modelTransformer
  * @param int $priority
  *
  * @return $this|ModelTransformerInterface
  *
  * @throws \RuntimeException
  */
 public function addModelTransformer($modelTransformer, $priority = 0)
 {
     if (!($modelTransformer instanceof ModelTransformerInterface || $modelTransformer instanceof ContextualModelTransformerInterface || $modelTransformer instanceof ObjectTransformerInterface)) {
         throw new \RuntimeException(sprintf('Model transformer should be an instance of "%s", "%s" or "%s"', ModelTransformerInterface::class, ContextualModelTransformerInterface::class, ObjectTransformerInterface::class));
     }
     if ($modelTransformer instanceof ObjectTransformerInterface) {
         if (!isset($this->objectTransformers[$modelTransformer->getSupportedClass()])) {
             $this->objectTransformers[$modelTransformer->getSupportedClass()] = [];
         }
         if (!isset($this->objectTransformers[$modelTransformer->getSupportedClass()][$modelTransformer->getTargetClass()])) {
             $this->objectTransformers[$modelTransformer->getSupportedClass()][$modelTransformer->getTargetClass()] = [];
         }
         $this->objectTransformers[$modelTransformer->getSupportedClass()][$modelTransformer->getTargetClass()][$priority] = $modelTransformer;
         unset($this->sortedObjectTransformers);
         return $this;
     }
     if (!isset($this->modelTransformers[$priority])) {
         $this->modelTransformers[$priority] = [];
     }
     $this->modelTransformers[$priority][] = $modelTransformer;
     unset($this->sortedModelTransformers);
     return $this;
 }
 public function it_should_find_and_return_supported_model_transformer(ModelTransformerInterface $notSupportedModelTransformer, ModelTransformerInterface $supportedModelTransformer)
 {
     $notSupportedModelTransformer->supports(new \stdClass(), SomeClass::class)->willReturn(false);
     $supportedModelTransformer->supports(new \stdClass(), SomeClass::class)->willReturn(true);
     $this->addModelTransformer($notSupportedModelTransformer);
     $this->addModelTransformer($supportedModelTransformer);
     $this->findSupportedModelTransformer(new \stdClass(), SomeClass::class)->shouldBe($supportedModelTransformer);
 }