public static function assert($value, $name = 'value')
    {
        if (is_object($value)) {
            throw new InvalidNotObjectException($name);
        }

        if (!is_string($name)) {
            throw new InvalidStringException('name', $name);
        }

        if (empty(self::$validator)) {
            self::$validator = new static;
        }

        self::$validator->name  = $name;
        self::$validator->value = $value;

        return self::$validator;
    }