protected function valueTypeError(string $method, $value): string
    {
        $valueType = is_object($value) ? get_class($value) : gettype($value);

        return sprintf(
            '%s::%s expects value type (%s); received (%s) %s',
            static::class,
            $method,
            $this->valueType(),
            $valueType,
            VarPrinter::toString($value)
        );
    }