private/Convert-HashtableToRenderSafePSObject.ps1

function Convert-HashtableToRenderSafePSObject {
    param(
        [object] $Hashtable,
        [hashtable] $Renderables
    )
    $customObject = [ordered]@{}
    foreach ($item in $Hashtable.GetEnumerator()) {
        if ($item.Value -is [hashtable] -or $item.Value -is [ordered]) {
            $item.Value = Convert-HashtableToRenderSafePSObject -Hashtable $item.Value
        } elseif ($item.Value -is [Spectre.Console.Rendering.Renderable]) {
            $renderableKey = "RENDERABLE__$([Guid]::NewGuid().Guid)"
            $Renderables[$renderableKey] = $item.Value
            $item.Value = $renderableKey
        }
        $customObject[$item.Key] = $item.Value
    }
    return [pscustomobject]$customObject
}