protected function urlFormat($id, $url_fmt, $properties_cache): string
	{
		if (isset($url_fmt)) {
			if ($properties_cache === null) {
				// URL contains ID only, so there is no need to load properties.
				return Utils::filename_format($url_fmt, array_combine($this->describeId(), (array) $id));
			} else {
				// However, if properties are in cache, it is better to use them.
				return Utils::filename_format($url_fmt, $properties_cache);
			}
		} else {
			// Default fallback to something reasonable. It might not work, but meh.
			return '/'.$this->machine_type.'/'.(is_array($id) ? join('/', $id) : $id);
		}
	}