private function decodeFilename(string $filename) : string
{
if (preg_match('~(?P<charset>[^\']+)\'(?P<lang>[^\']*)\'(?P<filename>.+)~i', $filename, $parts)) {
$filename = $this->convertToUtf8(rawurldecode($parts['filename']), $parts['charset']);
} elseif (0 === strpos($filename, '=?')) {
$filename = $this->decodeMimeHeader($filename);
}
return $filename;
}