private/Resolve-GlyBuiltInThemeStyle.ps1

function Resolve-GlyBuiltInThemeStyle {
  param(
    [Parameter(Mandatory)]
    [object] $Theme,

    [Parameter(Mandatory)]
    [System.IO.FileSystemInfo] $InputObject,

    [GlyBuiltInSelectorDefinition] $ResolvedSelector
  )

  $essentialTokens = @('dir', 'junction', 'lnk', 'readonly', 'hidden')
  if ($null -ne $ResolvedSelector -and $ResolvedSelector.Token -in $essentialTokens) {
    return Get-GlyBuiltInThemeStyle `
      -Theme $Theme `
      -Palette $ResolvedSelector.Palette `
      -Bold $ResolvedSelector.Bold
  }

  if ($null -eq $Theme.RuleCache) {
    $Theme.RuleCache = [GlyThemeRule[]] @(
      foreach ($definition in Get-GlyBuiltInSelectorCatalog) {
        if ($definition.Token -in $essentialTokens) {
          [GlyThemeRule]@{
            Selector = $definition.Selector
            Style    = Get-GlyBuiltInThemeStyle `
              -Theme $Theme `
              -Palette $definition.Palette `
              -Bold $definition.Bold
          }
        }
      }
    )
  }

  $rule = Resolve-GlyFileSystemRule -InputObject $InputObject -Rules $Theme.RuleCache
  if ($null -ne $rule) {
    return $rule.Style
  }
  return Get-GlyBuiltInThemeStyle -Theme $Theme -Palette File
}