protected function subPath(string $primary_key, $sub_key = null, array $args = []): string
    {
        if (!isset($sub_key)) {
            if (empty($args['preserve_keys'])) {
                extract($this->sha1Keys($primary_key, null, $args));
            }
            return $sub_path = $primary_key;
        } else {
            if (empty($args['preserve_keys'])) {
                extract($this->sha1Keys($primary_key, $sub_key, $args));
            }
            $shard_id        = $this->c::sha1ModShardId($primary_key.$sub_key);
            return $sub_path = $primary_key.'/'.$shard_id.'/'.$sub_key;
        }
    }