public function stream_metadata($path, $options, $value)
    {
        self::restore();
        $path = self::overlayPath($path);
        switch ($options) {
            case STREAM_META_TOUCH:
                if (!empty($value)) {
                    $success = touch($path, $value[0], $value[1]);
                } else {
                    $success = touch($path);
                }
                break;
            case STREAM_META_OWNER_NAME:
                // Fall through
            case STREAM_META_OWNER:
                $success = chown($path, $value);
                break;
            case STREAM_META_GROUP_NAME:
                // Fall through
            case STREAM_META_GROUP:
                $success = chgrp($path, $value);
                break;
            case STREAM_META_ACCESS:
                $success = chmod($path, $value);
                break;
            default:
                $success = false;
        }
        self::register();
        return $success;
    }