internal/functions/Merge-ExportNodeAncestors.ps1

function Merge-ExportNodeAncestors {
    [CmdletBinding()]
    param (
        [hashtable] $ParentNode,
        [string] $PacSelector,
        [string] $PropertyName,
        $PropertyValue
    )

    $parentClusters = $ParentNode.clusters
    if (-not $parentClusters.ContainsKey($PropertyName)) {
        $null = $parentClusters.Add($PropertyName, (ConvertTo-ArrayList $PropertyValue))
        $ParentNode[$PropertyName] = $PropertyValue
    }
    else {
        $parentCluster = $parentClusters.$PropertyName
        foreach ($clusterItem in $parentCluster) {
            $match = $false
            if ($PropertyName -eq "parameters") {
                $match = Confirm-ParametersUsageMatches $clusterItem $PropertyValue
            }
            else {
                $match = Confirm-ObjectValueEqualityDeep $clusterItem $PropertyValue
            }
            if ($match) {
                return $true
            }
        }
        $null = $parentCluster.Add($PropertyValue)
        if ($ParentNode.ContainsKey($PropertyName)) {
            $null = $ParentNode.Remove($PropertyName)
        }
    }
    return $false
}