protected function refresh() : bool
    {
        // Without a resource to grab the metadata for, let invokers know there's no data
        // to work with presently.
        if (!$this->resource) {
            return false;
        }

        // Prepare the status mask if necessary. Might as well give it a value to begin with.
        if (!$this->status) {
            $this->status = new core\Mask(stream_is_local($this->resource) ? interfaces\Stream::LOCAL : 0);
        }

        // The call results of metadata() are cached so we can just use the class property.
        $this->getMetadata();

        if (isset(self::$rwh['read'][$this->metadata['mode']])) {
            $this->status->set(interfaces\Stream::READABLE);
        }

        if (isset(self::$rwh['write'][$this->metadata['mode']])) {
            $this->status->set(interfaces\Stream::WRITABLE);
        }

        // Those may change, so... besides - fancy syntax, eh chaps?
        $this->status->{((isset($this->metadata['seekable']) && $this->metadata['seekable']) ? 'set' : 'remove')}(interfaces\Stream::SEEKABLE);
        $this->status->{((isset($this->metadata['blocked'])  && $this->metadata['blocked'])  ? 'set' : 'remove')}(interfaces\Stream::BLOCKED);

        return true;
    }