private function findSupportedObjectTransformer($supportedClass, $targetClass)
    {
        $objectTransformers = $this->getObjectTransformers();
        if (isset($objectTransformers[$supportedClass]) && isset($objectTransformers[$supportedClass][$targetClass])) {
            return $objectTransformers[$supportedClass][$targetClass];
        }

        $supportedReflectionClass = new \ReflectionClass($supportedClass);

        if ($supportedReflectionClass->getParentClass()
            && ($objectTransformer = $this->findSupportedObjectTransformer($supportedReflectionClass->getParentClass()->getName(), $targetClass))
        ) {
            return $objectTransformer;
        }

        $targetReflectionClass = new \ReflectionClass($targetClass);
        if ($targetReflectionClass->getParentClass()
            && ($objectTransformer = $this->findSupportedObjectTransformer($supportedClass, $targetReflectionClass->getParentClass()->getName()))
        ) {
            return $objectTransformer;
        }

        return null;
    }