public function setProtectedProperty(
        $object,
        string $property,
        $value
    ) {
        if (!is_object($object)) {
            $msg = $this->getErrorMessage(1, __METHOD__, $object);
            throw new InvalidArgumentException($msg);
        }
        $class = new ReflectionClass($object);
        $property = $class->getProperty($property);
        $property->setAccessible(true);
        $property->setValue($object, $value);
    }