Evaluate target enumeration names to distinguish ambiguous overloads when implicitly casting parameters
This line works, because PowerShell correctly guesses that I want to use the constructor which takes a String, a FileMode enum, a FileAccess enum, and a FileShare enum, and implicitly casts the last three strings to the appropriate enumeration.
$Input = New-Object System.IO.FileStream $GZFilePath, 'Open', 'Read', 'Read'
This line fails, because PowerShell does not know if I want the constructor which takes a String and a CompressionLevel enum, or a String and a CompressionMode enum.
$Stream = New-Object System.IO.Compression.GzipStream $Input, 'Decompress'
But PowerShell could distinguish between the two by checking if the string is a valid name in one and only one of the two enumerations.