public static function matchPath(string $pattern, string $path, bool $isCaseSensitive = true): bool
  {
    // Explicitly exclude directory itself.
    if ($path=='' && $pattern=='**/*')
    {
      return false;
    }

    $dirSep         = preg_quote(DIRECTORY_SEPARATOR, '/');
    $trailingDirSep = '(('.$dirSep.')?|('.$dirSep.').+)';

    $patternReplacements = [$dirSep.'\*\*'.$dirSep => $dirSep.'.*'.$trailingDirSep,
                            $dirSep.'\*\*'         => $trailingDirSep,
                            '\*\*'.$dirSep         => '(.*'.$dirSep.')?',
                            '\*\*'                 => '.*',
                            '\*'                   => '[^'.$dirSep.']*',
                            '\?'                   => '[^'.$dirSep.']'];

    $rePattern = preg_quote($pattern, '/');
    $rePattern = str_replace(array_keys($patternReplacements), array_values($patternReplacements), $rePattern);
    $rePattern = '/^'.$rePattern.'$/'.($isCaseSensitive ? '' : 'i');

    return (bool)preg_match($rePattern, $path);
  }