private static function getPropertyValueByReflectionProperty(
        $object,
        string $property,
        ?\ReflectionProperty $reflectionProperty = null
    ) {
        $value = null;
        $valueFound = false;
        $className = self::getClassName($object);

        try {
            if (null === $reflectionProperty) {
                $reflectionProperty = new \ReflectionProperty($className, $property);
            }

            $value = $reflectionProperty->getValue($object);
            $valueFound = true;
        } catch (\ReflectionException $exception) {
        }

        if (null !== $reflectionProperty) {
            $reflectionProperty->setAccessible(true);

            $value = $reflectionProperty->getValue($object);
            $valueFound = true;

            $reflectionProperty->setAccessible(false);
        }

        return [
            $value,
            $valueFound,
        ];
    }