Public/Set-ProviderStateValues.ps1

function Set-ProviderStateValues {
    [CmdletBinding()]
    param(
        $Provider,
        [Parameter(Mandatory)][hashtable]$Patch,
        [switch]$NonAtomic  # default is atomic (grouped under provider write lock)
    )

    Initialize-ProviderState $Provider

    if ($NonAtomic) {
        # Fast path, each key atomic but group is not
        foreach ($k in $Patch.Keys) {
            $v = $Patch[$k]
            $null = $Provider.State.AddOrUpdate($k, $v, { param($kk, $old) $v })
        }
        Update-ProviderStateMeta $Provider
        return
    }

    # Atomic group update
    With-ProviderLock $Provider {
        foreach ($k in $Patch.Keys) {
            $v = $Patch[$k]
            # Direct indexer set is fine under exclusive lock
            $Provider.State[$k] = $v
        }
        Update-ProviderStateMeta $Provider
    }
}