Public/Initialize-ExpressionCache.ps1

function Initialize-ExpressionCache {
    [CmdletBinding()]
    param(
        [Parameter(Mandatory)]
        [string]$AppName,        
        [System.Collections.IDictionary]$Providers,
        [switch]$ReplaceProviders
    )

    With-WriteLock {
        $script:Config = [ordered]@{
            AppName = $AppName
            Version = $Script:moduleData.ModuleVersion
        }
    
        $script:RegisteredStorageProviders = [ordered]@{}
    }

    $defaults = Get-DefaultProviders   # returns [ordered] hashtable
    $merged = Merge-ExpressionCacheProviders -Defaults $defaults -Overrides $Providers -Replace:$ReplaceProviders

    foreach ($key in $merged.Keys) {
        Add-ExpressionCacheProvider -Provider $merged[$key] | Out-Null
    }

    With-WriteLock {
        $script:RegisteredStorageProviders = $merged
    }

    Write-Verbose "ExpressionCache initialized with $($merged.Count) provider(s): $($merged.Keys -join ', ')"
}