public function callProtectedMethod(
        $object,
        string $method,
        array $arguments = []
    ) {
        if (!is_object($object)) {
            $msg = $this->getErrorMessage(1, __METHOD__, $object);
            throw new InvalidArgumentException($msg);
        }
        $class = new ReflectionClass($object);
        $method = $class->getMethod($method);
        $method->setAccessible(true);
        return $method->invokeArgs($object, $arguments);
    }