public function glob($pattern)
    {
        if (!is_string($pattern)) {
            throw new InvalidStringException('pattern', $pattern);
        } elseif (empty($pattern)) {
            throw new InvalidNotEmptyException('pattern');
        }

        if (!is_string($this->value)) {
            throw new InvalidStringException($this->name, $this->value);
        } elseif (!fnmatch($pattern, $this->value)) {
            throw new StringNotMatchGlobException($this->name, $this->value, $pattern);
        }

        return $this;
    }