protected function dataGet($target, $key)
    {
        foreach (explode('.', $key) as $segment) {
            if (is_object($target) && in_array(Revisionable::class, class_uses_recursive(get_class($target)))) {
                $target = $this->passThroughRevisionable($target, $segment);
            } elseif ($target instanceof self || $target instanceof Revision) {
                $target = $this->passThroughRevision($target, $segment);
            } elseif ($target instanceof Model) {
                $target = $this->passThroughModel($target, $segment);
            } else {
                $target = null;
            }

            if (!$target) {
                return;
            }
        }

        return $target;
    }