public function getTransformer(string $target_class)
    {
        if (isset($this->transformers[$target_class]))
            return $this->transformers[$target_class];

        foreach ($this->transformers as $class => $transformer)
        {
            $inherit_mode = $transformer->getInheritMode();
            if (
                ($inherit_mode === Transformer::INHERIT_UP && is_a($class, $target_class, true))
                || ($inherit_mode === Transformer::INHERIT_DOWN && is_a($target_class, $class, true))
            )
            {
                return $transformer;
            }
        }

        throw new TransformException("No transform to class $target_class");
    }