private/Resolve-GlyFileSystemRule.ps1

function Resolve-GlyFileSystemRule {
  param(
    [Parameter(Mandatory)]
    [System.IO.FileSystemInfo] $InputObject,

    [Parameter(Mandatory)]
    [object[]] $Rules
  )

  $ruleList = @($Rules)
  for ($i = $ruleList.Count - 1; $i -ge 0; $i--) {
    $rule = $ruleList[$i]
    $selector = $rule.Selector
    if ($null -eq $selector) {
      continue
    }

    try {
      if (Test-GlyRuleSelector -Selector $selector -InputObject $InputObject) {
        return $rule
      }
    }
    catch {
      continue
    }
  }

  return $null
}