File: CodeGen\CodeGenLengthBasedSwitchTests.cs
Web Access
Project: src\src\Compilers\CSharp\Test\Emit2\Microsoft.CodeAnalysis.CSharp.Emit2.UnitTests.csproj (Microsoft.CodeAnalysis.CSharp.Emit2.UnitTests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
 
using Microsoft.CodeAnalysis.CodeGen;
using Microsoft.CodeAnalysis.CSharp.Test.Utilities;
using Microsoft.CodeAnalysis.Test.Utilities;
using Roslyn.Test.Utilities;
using Xunit;
 
namespace Microsoft.CodeAnalysis.CSharp.UnitTests.CodeGen;
 
public class CodeGenLengthBasedSwitchTests : CSharpTestBase
{
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void MixOfBucketSizes()
    {
        var source = """
assert(null, "default");
assert("", "blank");
assert("a", "a");
assert("b", "b");
assert("c", "c");
assert("no");
assert("yes");
assert("four");
assert("blurb");
assert("hello");
assert("lamps");
assert("lambs");
assert("names");
assert("slurp");
assert("towed");
assert("words");
assert("not", "default");
assert("other", "default");
assert("y", "default");
assert("longer example", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string o)
    {
        return o switch
        {
            "" => "blank",
            "a" => "a",
            "b" => "b",
            "c" => "c",
            "no" => "no",
            "yes" => "yes",
            "four" => "four",
            "alice" => "alice",
            "blurb" => "blurb",
            "hello" => "hello",
            "lamps" => "lamps",
            "lambs" => "lambs",
            "lower" => "lower",
            "names" => "names",
            "slurp" => "slurp",
            "towed" => "towed",
            "words" => "words",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyMemberInIL(PrivateImplementationDetails.SynthesizedStringHashFunctionName + "(string)", expected: false);
        verifier.VerifyIL("C.M", """
{
  // Code size      584 (0x248)
  .maxstack  2
  .locals init (string V_0,
                int V_1,
                char V_2)
  IL_0000:  ldarg.0
  IL_0001:  brfalse    IL_0240
  IL_0006:  ldarg.0
  IL_0007:  call       "int string.Length.get"
  IL_000c:  stloc.1
  IL_000d:  ldloc.1
  IL_000e:  switch    (
        IL_01b5,
        IL_0030,
        IL_00ae,
        IL_00c3,
        IL_00d8,
        IL_0052)
  IL_002b:  br         IL_0240
  IL_0030:  ldarg.0
  IL_0031:  ldc.i4.0
  IL_0032:  call       "char string.this[int].get"
  IL_0037:  stloc.2
  IL_0038:  ldloc.2
  IL_0039:  ldc.i4.s   97
  IL_003b:  sub
  IL_003c:  switch    (
        IL_01c0,
        IL_01c8,
        IL_01d0)
  IL_004d:  br         IL_0240
  IL_0052:  ldarg.0
  IL_0053:  ldc.i4.0
  IL_0054:  call       "char string.this[int].get"
  IL_0059:  stloc.2
  IL_005a:  ldloc.2
  IL_005b:  ldc.i4.s   104
  IL_005d:  bgt.un.s   IL_007c
  IL_005f:  ldloc.2
  IL_0060:  ldc.i4.s   97
  IL_0062:  beq        IL_00ed
  IL_0067:  ldloc.2
  IL_0068:  ldc.i4.s   98
  IL_006a:  beq        IL_0102
  IL_006f:  ldloc.2
  IL_0070:  ldc.i4.s   104
  IL_0072:  beq        IL_0117
  IL_0077:  br         IL_0240
  IL_007c:  ldloc.2
  IL_007d:  ldc.i4.s   108
  IL_007f:  beq        IL_012c
  IL_0084:  ldloc.2
  IL_0085:  ldc.i4.s   110
  IL_0087:  beq        IL_0161
  IL_008c:  ldloc.2
  IL_008d:  ldc.i4.s   115
  IL_008f:  sub
  IL_0090:  switch    (
        IL_0176,
        IL_018b,
        IL_0240,
        IL_0240,
        IL_01a0)
  IL_00a9:  br         IL_0240
  IL_00ae:  ldarg.0
  IL_00af:  ldstr      "no"
  IL_00b4:  call       "bool string.op_Equality(string, string)"
  IL_00b9:  brtrue     IL_01d8
  IL_00be:  br         IL_0240
  IL_00c3:  ldarg.0
  IL_00c4:  ldstr      "yes"
  IL_00c9:  call       "bool string.op_Equality(string, string)"
  IL_00ce:  brtrue     IL_01e0
  IL_00d3:  br         IL_0240
  IL_00d8:  ldarg.0
  IL_00d9:  ldstr      "four"
  IL_00de:  call       "bool string.op_Equality(string, string)"
  IL_00e3:  brtrue     IL_01e8
  IL_00e8:  br         IL_0240
  IL_00ed:  ldarg.0
  IL_00ee:  ldstr      "alice"
  IL_00f3:  call       "bool string.op_Equality(string, string)"
  IL_00f8:  brtrue     IL_01f0
  IL_00fd:  br         IL_0240
  IL_0102:  ldarg.0
  IL_0103:  ldstr      "blurb"
  IL_0108:  call       "bool string.op_Equality(string, string)"
  IL_010d:  brtrue     IL_01f8
  IL_0112:  br         IL_0240
  IL_0117:  ldarg.0
  IL_0118:  ldstr      "hello"
  IL_011d:  call       "bool string.op_Equality(string, string)"
  IL_0122:  brtrue     IL_0200
  IL_0127:  br         IL_0240
  IL_012c:  ldarg.0
  IL_012d:  ldstr      "lamps"
  IL_0132:  call       "bool string.op_Equality(string, string)"
  IL_0137:  brtrue     IL_0208
  IL_013c:  ldarg.0
  IL_013d:  ldstr      "lambs"
  IL_0142:  call       "bool string.op_Equality(string, string)"
  IL_0147:  brtrue     IL_0210
  IL_014c:  ldarg.0
  IL_014d:  ldstr      "lower"
  IL_0152:  call       "bool string.op_Equality(string, string)"
  IL_0157:  brtrue     IL_0218
  IL_015c:  br         IL_0240
  IL_0161:  ldarg.0
  IL_0162:  ldstr      "names"
  IL_0167:  call       "bool string.op_Equality(string, string)"
  IL_016c:  brtrue     IL_0220
  IL_0171:  br         IL_0240
  IL_0176:  ldarg.0
  IL_0177:  ldstr      "slurp"
  IL_017c:  call       "bool string.op_Equality(string, string)"
  IL_0181:  brtrue     IL_0228
  IL_0186:  br         IL_0240
  IL_018b:  ldarg.0
  IL_018c:  ldstr      "towed"
  IL_0191:  call       "bool string.op_Equality(string, string)"
  IL_0196:  brtrue     IL_0230
  IL_019b:  br         IL_0240
  IL_01a0:  ldarg.0
  IL_01a1:  ldstr      "words"
  IL_01a6:  call       "bool string.op_Equality(string, string)"
  IL_01ab:  brtrue     IL_0238
  IL_01b0:  br         IL_0240
  IL_01b5:  ldstr      "blank"
  IL_01ba:  stloc.0
  IL_01bb:  br         IL_0246
  IL_01c0:  ldstr      "a"
  IL_01c5:  stloc.0
  IL_01c6:  br.s       IL_0246
  IL_01c8:  ldstr      "b"
  IL_01cd:  stloc.0
  IL_01ce:  br.s       IL_0246
  IL_01d0:  ldstr      "c"
  IL_01d5:  stloc.0
  IL_01d6:  br.s       IL_0246
  IL_01d8:  ldstr      "no"
  IL_01dd:  stloc.0
  IL_01de:  br.s       IL_0246
  IL_01e0:  ldstr      "yes"
  IL_01e5:  stloc.0
  IL_01e6:  br.s       IL_0246
  IL_01e8:  ldstr      "four"
  IL_01ed:  stloc.0
  IL_01ee:  br.s       IL_0246
  IL_01f0:  ldstr      "alice"
  IL_01f5:  stloc.0
  IL_01f6:  br.s       IL_0246
  IL_01f8:  ldstr      "blurb"
  IL_01fd:  stloc.0
  IL_01fe:  br.s       IL_0246
  IL_0200:  ldstr      "hello"
  IL_0205:  stloc.0
  IL_0206:  br.s       IL_0246
  IL_0208:  ldstr      "lamps"
  IL_020d:  stloc.0
  IL_020e:  br.s       IL_0246
  IL_0210:  ldstr      "lambs"
  IL_0215:  stloc.0
  IL_0216:  br.s       IL_0246
  IL_0218:  ldstr      "lower"
  IL_021d:  stloc.0
  IL_021e:  br.s       IL_0246
  IL_0220:  ldstr      "names"
  IL_0225:  stloc.0
  IL_0226:  br.s       IL_0246
  IL_0228:  ldstr      "slurp"
  IL_022d:  stloc.0
  IL_022e:  br.s       IL_0246
  IL_0230:  ldstr      "towed"
  IL_0235:  stloc.0
  IL_0236:  br.s       IL_0246
  IL_0238:  ldstr      "words"
  IL_023d:  stloc.0
  IL_023e:  br.s       IL_0246
  IL_0240:  ldstr      "default"
  IL_0245:  stloc.0
  IL_0246:  ldloc.0
  IL_0247:  ret
}
""");
        comp = CreateCompilation(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyMemberInIL("<PrivateImplementationDetails>." + PrivateImplementationDetails.SynthesizedStringHashFunctionName + "(string)", expected: true);
 
        verifier.VerifyIL("C.M", """
{
  // Code size      786 (0x312)
  .maxstack  2
  .locals init (string V_0,
                uint V_1)
  IL_0000:  ldarg.0
  IL_0001:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  ldc.i4     0x62366ffa
  IL_000d:  bgt.un     IL_0096
  IL_0012:  ldloc.1
  IL_0013:  ldc.i4     0x3ec721c0
  IL_0018:  bgt.un.s   IL_0058
  IL_001a:  ldloc.1
  IL_001b:  ldc.i4     0x2f69f5a5
  IL_0020:  bgt.un.s   IL_003d
  IL_0022:  ldloc.1
  IL_0023:  ldc.i4     0x242602e6
  IL_0028:  beq        IL_0201
  IL_002d:  ldloc.1
  IL_002e:  ldc.i4     0x2f69f5a5
  IL_0033:  beq        IL_0198
  IL_0038:  br         IL_030a
  IL_003d:  ldloc.1
  IL_003e:  ldc.i4     0x3448ae58
  IL_0043:  beq        IL_01ec
  IL_0048:  ldloc.1
  IL_0049:  ldc.i4     0x3ec721c0
  IL_004e:  beq        IL_0255
  IL_0053:  br         IL_030a
  IL_0058:  ldloc.1
  IL_0059:  ldc.i4     0x4f9f2cab
  IL_005e:  bgt.un.s   IL_007b
  IL_0060:  ldloc.1
  IL_0061:  ldc.i4     0x4e9f3590
  IL_0066:  beq        IL_0183
  IL_006b:  ldloc.1
  IL_006c:  ldc.i4     0x4f9f2cab
  IL_0071:  beq        IL_01d7
  IL_0076:  br         IL_030a
  IL_007b:  ldloc.1
  IL_007c:  ldc.i4     0x5cb7aa8a
  IL_0081:  beq        IL_026a
  IL_0086:  ldloc.1
  IL_0087:  ldc.i4     0x62366ffa
  IL_008c:  beq        IL_016e
  IL_0091:  br         IL_030a
  IL_0096:  ldloc.1
  IL_0097:  ldc.i4     0xb51d04ba
  IL_009c:  bgt.un.s   IL_00d9
  IL_009e:  ldloc.1
  IL_009f:  ldc.i4     0x811c9dc5
  IL_00a4:  bgt.un.s   IL_00be
  IL_00a6:  ldloc.1
  IL_00a7:  ldc.i4     0x63cb5a27
  IL_00ac:  beq        IL_0240
  IL_00b1:  ldloc.1
  IL_00b2:  ldc.i4     0x811c9dc5
  IL_00b7:  beq.s      IL_0119
  IL_00b9:  br         IL_030a
  IL_00be:  ldloc.1
  IL_00bf:  ldc.i4     0x872213e7
  IL_00c4:  beq        IL_01ad
  IL_00c9:  ldloc.1
  IL_00ca:  ldc.i4     0xb51d04ba
  IL_00cf:  beq        IL_0216
  IL_00d4:  br         IL_030a
  IL_00d9:  ldloc.1
  IL_00da:  ldc.i4     0xe60c2c52
  IL_00df:  bgt.un.s   IL_00f6
  IL_00e1:  ldloc.1
  IL_00e2:  ldc.i4     0xe40c292c
  IL_00e7:  beq.s      IL_012f
  IL_00e9:  ldloc.1
  IL_00ea:  ldc.i4     0xe60c2c52
  IL_00ef:  beq.s      IL_0159
  IL_00f1:  br         IL_030a
  IL_00f6:  ldloc.1
  IL_00f7:  ldc.i4     0xe6e5718f
  IL_00fc:  beq        IL_022b
  IL_0101:  ldloc.1
  IL_0102:  ldc.i4     0xe70c2de5
  IL_0107:  beq.s      IL_0144
  IL_0109:  ldloc.1
  IL_010a:  ldc.i4     0xf76b8c8e
  IL_010f:  beq        IL_01c2
  IL_0114:  br         IL_030a
  IL_0119:  ldarg.0
  IL_011a:  brfalse    IL_030a
  IL_011f:  ldarg.0
  IL_0120:  call       "int string.Length.get"
  IL_0125:  brfalse    IL_027f
  IL_012a:  br         IL_030a
  IL_012f:  ldarg.0
  IL_0130:  ldstr      "a"
  IL_0135:  call       "bool string.op_Equality(string, string)"
  IL_013a:  brtrue     IL_028a
  IL_013f:  br         IL_030a
  IL_0144:  ldarg.0
  IL_0145:  ldstr      "b"
  IL_014a:  call       "bool string.op_Equality(string, string)"
  IL_014f:  brtrue     IL_0292
  IL_0154:  br         IL_030a
  IL_0159:  ldarg.0
  IL_015a:  ldstr      "c"
  IL_015f:  call       "bool string.op_Equality(string, string)"
  IL_0164:  brtrue     IL_029a
  IL_0169:  br         IL_030a
  IL_016e:  ldarg.0
  IL_016f:  ldstr      "no"
  IL_0174:  call       "bool string.op_Equality(string, string)"
  IL_0179:  brtrue     IL_02a2
  IL_017e:  br         IL_030a
  IL_0183:  ldarg.0
  IL_0184:  ldstr      "yes"
  IL_0189:  call       "bool string.op_Equality(string, string)"
  IL_018e:  brtrue     IL_02aa
  IL_0193:  br         IL_030a
  IL_0198:  ldarg.0
  IL_0199:  ldstr      "four"
  IL_019e:  call       "bool string.op_Equality(string, string)"
  IL_01a3:  brtrue     IL_02b2
  IL_01a8:  br         IL_030a
  IL_01ad:  ldarg.0
  IL_01ae:  ldstr      "alice"
  IL_01b3:  call       "bool string.op_Equality(string, string)"
  IL_01b8:  brtrue     IL_02ba
  IL_01bd:  br         IL_030a
  IL_01c2:  ldarg.0
  IL_01c3:  ldstr      "blurb"
  IL_01c8:  call       "bool string.op_Equality(string, string)"
  IL_01cd:  brtrue     IL_02c2
  IL_01d2:  br         IL_030a
  IL_01d7:  ldarg.0
  IL_01d8:  ldstr      "hello"
  IL_01dd:  call       "bool string.op_Equality(string, string)"
  IL_01e2:  brtrue     IL_02ca
  IL_01e7:  br         IL_030a
  IL_01ec:  ldarg.0
  IL_01ed:  ldstr      "lamps"
  IL_01f2:  call       "bool string.op_Equality(string, string)"
  IL_01f7:  brtrue     IL_02d2
  IL_01fc:  br         IL_030a
  IL_0201:  ldarg.0
  IL_0202:  ldstr      "lambs"
  IL_0207:  call       "bool string.op_Equality(string, string)"
  IL_020c:  brtrue     IL_02da
  IL_0211:  br         IL_030a
  IL_0216:  ldarg.0
  IL_0217:  ldstr      "lower"
  IL_021c:  call       "bool string.op_Equality(string, string)"
  IL_0221:  brtrue     IL_02e2
  IL_0226:  br         IL_030a
  IL_022b:  ldarg.0
  IL_022c:  ldstr      "names"
  IL_0231:  call       "bool string.op_Equality(string, string)"
  IL_0236:  brtrue     IL_02ea
  IL_023b:  br         IL_030a
  IL_0240:  ldarg.0
  IL_0241:  ldstr      "slurp"
  IL_0246:  call       "bool string.op_Equality(string, string)"
  IL_024b:  brtrue     IL_02f2
  IL_0250:  br         IL_030a
  IL_0255:  ldarg.0
  IL_0256:  ldstr      "towed"
  IL_025b:  call       "bool string.op_Equality(string, string)"
  IL_0260:  brtrue     IL_02fa
  IL_0265:  br         IL_030a
  IL_026a:  ldarg.0
  IL_026b:  ldstr      "words"
  IL_0270:  call       "bool string.op_Equality(string, string)"
  IL_0275:  brtrue     IL_0302
  IL_027a:  br         IL_030a
  IL_027f:  ldstr      "blank"
  IL_0284:  stloc.0
  IL_0285:  br         IL_0310
  IL_028a:  ldstr      "a"
  IL_028f:  stloc.0
  IL_0290:  br.s       IL_0310
  IL_0292:  ldstr      "b"
  IL_0297:  stloc.0
  IL_0298:  br.s       IL_0310
  IL_029a:  ldstr      "c"
  IL_029f:  stloc.0
  IL_02a0:  br.s       IL_0310
  IL_02a2:  ldstr      "no"
  IL_02a7:  stloc.0
  IL_02a8:  br.s       IL_0310
  IL_02aa:  ldstr      "yes"
  IL_02af:  stloc.0
  IL_02b0:  br.s       IL_0310
  IL_02b2:  ldstr      "four"
  IL_02b7:  stloc.0
  IL_02b8:  br.s       IL_0310
  IL_02ba:  ldstr      "alice"
  IL_02bf:  stloc.0
  IL_02c0:  br.s       IL_0310
  IL_02c2:  ldstr      "blurb"
  IL_02c7:  stloc.0
  IL_02c8:  br.s       IL_0310
  IL_02ca:  ldstr      "hello"
  IL_02cf:  stloc.0
  IL_02d0:  br.s       IL_0310
  IL_02d2:  ldstr      "lamps"
  IL_02d7:  stloc.0
  IL_02d8:  br.s       IL_0310
  IL_02da:  ldstr      "lambs"
  IL_02df:  stloc.0
  IL_02e0:  br.s       IL_0310
  IL_02e2:  ldstr      "lower"
  IL_02e7:  stloc.0
  IL_02e8:  br.s       IL_0310
  IL_02ea:  ldstr      "names"
  IL_02ef:  stloc.0
  IL_02f0:  br.s       IL_0310
  IL_02f2:  ldstr      "slurp"
  IL_02f7:  stloc.0
  IL_02f8:  br.s       IL_0310
  IL_02fa:  ldstr      "towed"
  IL_02ff:  stloc.0
  IL_0300:  br.s       IL_0310
  IL_0302:  ldstr      "words"
  IL_0307:  stloc.0
  IL_0308:  br.s       IL_0310
  IL_030a:  ldstr      "default"
  IL_030f:  stloc.0
  IL_0310:  ldloc.0
  IL_0311:  ret
}
""");
 
        comp = CreateCompilation(source, options: TestOptions.DebugExe);
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      819 (0x333)
  .maxstack  2
  .locals init (string V_0,
                uint V_1,
                string V_2)
  IL_0000:  nop
  IL_0001:  ldc.i4.1
  IL_0002:  brtrue.s   IL_0005
  IL_0004:  nop
  IL_0005:  ldarg.0
  IL_0006:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_000b:  stloc.1
  IL_000c:  ldloc.1
  IL_000d:  ldc.i4     0x62366ffa
  IL_0012:  bgt.un     IL_00a3
  IL_0017:  ldloc.1
  IL_0018:  ldc.i4     0x3ec721c0
  IL_001d:  bgt.un.s   IL_0061
  IL_001f:  ldloc.1
  IL_0020:  ldc.i4     0x2f69f5a5
  IL_0025:  bgt.un.s   IL_0044
  IL_0027:  ldloc.1
  IL_0028:  ldc.i4     0x242602e6
  IL_002d:  beq        IL_0215
  IL_0032:  br.s       IL_0034
  IL_0034:  ldloc.1
  IL_0035:  ldc.i4     0x2f69f5a5
  IL_003a:  beq        IL_01ac
  IL_003f:  br         IL_0321
  IL_0044:  ldloc.1
  IL_0045:  ldc.i4     0x3448ae58
  IL_004a:  beq        IL_0200
  IL_004f:  br.s       IL_0051
  IL_0051:  ldloc.1
  IL_0052:  ldc.i4     0x3ec721c0
  IL_0057:  beq        IL_0269
  IL_005c:  br         IL_0321
  IL_0061:  ldloc.1
  IL_0062:  ldc.i4     0x4f9f2cab
  IL_0067:  bgt.un.s   IL_0086
  IL_0069:  ldloc.1
  IL_006a:  ldc.i4     0x4e9f3590
  IL_006f:  beq        IL_0197
  IL_0074:  br.s       IL_0076
  IL_0076:  ldloc.1
  IL_0077:  ldc.i4     0x4f9f2cab
  IL_007c:  beq        IL_01eb
  IL_0081:  br         IL_0321
  IL_0086:  ldloc.1
  IL_0087:  ldc.i4     0x5cb7aa8a
  IL_008c:  beq        IL_027e
  IL_0091:  br.s       IL_0093
  IL_0093:  ldloc.1
  IL_0094:  ldc.i4     0x62366ffa
  IL_0099:  beq        IL_0182
  IL_009e:  br         IL_0321
  IL_00a3:  ldloc.1
  IL_00a4:  ldc.i4     0xb51d04ba
  IL_00a9:  bgt.un.s   IL_00ea
  IL_00ab:  ldloc.1
  IL_00ac:  ldc.i4     0x811c9dc5
  IL_00b1:  bgt.un.s   IL_00cd
  IL_00b3:  ldloc.1
  IL_00b4:  ldc.i4     0x63cb5a27
  IL_00b9:  beq        IL_0254
  IL_00be:  br.s       IL_00c0
  IL_00c0:  ldloc.1
  IL_00c1:  ldc.i4     0x811c9dc5
  IL_00c6:  beq.s      IL_0130
  IL_00c8:  br         IL_0321
  IL_00cd:  ldloc.1
  IL_00ce:  ldc.i4     0x872213e7
  IL_00d3:  beq        IL_01c1
  IL_00d8:  br.s       IL_00da
  IL_00da:  ldloc.1
  IL_00db:  ldc.i4     0xb51d04ba
  IL_00e0:  beq        IL_022a
  IL_00e5:  br         IL_0321
  IL_00ea:  ldloc.1
  IL_00eb:  ldc.i4     0xe60c2c52
  IL_00f0:  bgt.un.s   IL_0109
  IL_00f2:  ldloc.1
  IL_00f3:  ldc.i4     0xe40c292c
  IL_00f8:  beq.s      IL_0143
  IL_00fa:  br.s       IL_00fc
  IL_00fc:  ldloc.1
  IL_00fd:  ldc.i4     0xe60c2c52
  IL_0102:  beq.s      IL_016d
  IL_0104:  br         IL_0321
  IL_0109:  ldloc.1
  IL_010a:  ldc.i4     0xe6e5718f
  IL_010f:  beq        IL_023f
  IL_0114:  br.s       IL_0116
  IL_0116:  ldloc.1
  IL_0117:  ldc.i4     0xe70c2de5
  IL_011c:  beq.s      IL_0158
  IL_011e:  br.s       IL_0120
  IL_0120:  ldloc.1
  IL_0121:  ldc.i4     0xf76b8c8e
  IL_0126:  beq        IL_01d6
  IL_012b:  br         IL_0321
  IL_0130:  ldarg.0
  IL_0131:  brfalse.s  IL_013e
  IL_0133:  ldarg.0
  IL_0134:  call       "int string.Length.get"
  IL_0139:  brfalse    IL_0293
  IL_013e:  br         IL_0321
  IL_0143:  ldarg.0
  IL_0144:  ldstr      "a"
  IL_0149:  call       "bool string.op_Equality(string, string)"
  IL_014e:  brtrue     IL_029e
  IL_0153:  br         IL_0321
  IL_0158:  ldarg.0
  IL_0159:  ldstr      "b"
  IL_015e:  call       "bool string.op_Equality(string, string)"
  IL_0163:  brtrue     IL_02a9
  IL_0168:  br         IL_0321
  IL_016d:  ldarg.0
  IL_016e:  ldstr      "c"
  IL_0173:  call       "bool string.op_Equality(string, string)"
  IL_0178:  brtrue     IL_02b1
  IL_017d:  br         IL_0321
  IL_0182:  ldarg.0
  IL_0183:  ldstr      "no"
  IL_0188:  call       "bool string.op_Equality(string, string)"
  IL_018d:  brtrue     IL_02b9
  IL_0192:  br         IL_0321
  IL_0197:  ldarg.0
  IL_0198:  ldstr      "yes"
  IL_019d:  call       "bool string.op_Equality(string, string)"
  IL_01a2:  brtrue     IL_02c1
  IL_01a7:  br         IL_0321
  IL_01ac:  ldarg.0
  IL_01ad:  ldstr      "four"
  IL_01b2:  call       "bool string.op_Equality(string, string)"
  IL_01b7:  brtrue     IL_02c9
  IL_01bc:  br         IL_0321
  IL_01c1:  ldarg.0
  IL_01c2:  ldstr      "alice"
  IL_01c7:  call       "bool string.op_Equality(string, string)"
  IL_01cc:  brtrue     IL_02d1
  IL_01d1:  br         IL_0321
  IL_01d6:  ldarg.0
  IL_01d7:  ldstr      "blurb"
  IL_01dc:  call       "bool string.op_Equality(string, string)"
  IL_01e1:  brtrue     IL_02d9
  IL_01e6:  br         IL_0321
  IL_01eb:  ldarg.0
  IL_01ec:  ldstr      "hello"
  IL_01f1:  call       "bool string.op_Equality(string, string)"
  IL_01f6:  brtrue     IL_02e1
  IL_01fb:  br         IL_0321
  IL_0200:  ldarg.0
  IL_0201:  ldstr      "lamps"
  IL_0206:  call       "bool string.op_Equality(string, string)"
  IL_020b:  brtrue     IL_02e9
  IL_0210:  br         IL_0321
  IL_0215:  ldarg.0
  IL_0216:  ldstr      "lambs"
  IL_021b:  call       "bool string.op_Equality(string, string)"
  IL_0220:  brtrue     IL_02f1
  IL_0225:  br         IL_0321
  IL_022a:  ldarg.0
  IL_022b:  ldstr      "lower"
  IL_0230:  call       "bool string.op_Equality(string, string)"
  IL_0235:  brtrue     IL_02f9
  IL_023a:  br         IL_0321
  IL_023f:  ldarg.0
  IL_0240:  ldstr      "names"
  IL_0245:  call       "bool string.op_Equality(string, string)"
  IL_024a:  brtrue     IL_0301
  IL_024f:  br         IL_0321
  IL_0254:  ldarg.0
  IL_0255:  ldstr      "slurp"
  IL_025a:  call       "bool string.op_Equality(string, string)"
  IL_025f:  brtrue     IL_0309
  IL_0264:  br         IL_0321
  IL_0269:  ldarg.0
  IL_026a:  ldstr      "towed"
  IL_026f:  call       "bool string.op_Equality(string, string)"
  IL_0274:  brtrue     IL_0311
  IL_0279:  br         IL_0321
  IL_027e:  ldarg.0
  IL_027f:  ldstr      "words"
  IL_0284:  call       "bool string.op_Equality(string, string)"
  IL_0289:  brtrue     IL_0319
  IL_028e:  br         IL_0321
  IL_0293:  ldstr      "blank"
  IL_0298:  stloc.0
  IL_0299:  br         IL_0329
  IL_029e:  ldstr      "a"
  IL_02a3:  stloc.0
  IL_02a4:  br         IL_0329
  IL_02a9:  ldstr      "b"
  IL_02ae:  stloc.0
  IL_02af:  br.s       IL_0329
  IL_02b1:  ldstr      "c"
  IL_02b6:  stloc.0
  IL_02b7:  br.s       IL_0329
  IL_02b9:  ldstr      "no"
  IL_02be:  stloc.0
  IL_02bf:  br.s       IL_0329
  IL_02c1:  ldstr      "yes"
  IL_02c6:  stloc.0
  IL_02c7:  br.s       IL_0329
  IL_02c9:  ldstr      "four"
  IL_02ce:  stloc.0
  IL_02cf:  br.s       IL_0329
  IL_02d1:  ldstr      "alice"
  IL_02d6:  stloc.0
  IL_02d7:  br.s       IL_0329
  IL_02d9:  ldstr      "blurb"
  IL_02de:  stloc.0
  IL_02df:  br.s       IL_0329
  IL_02e1:  ldstr      "hello"
  IL_02e6:  stloc.0
  IL_02e7:  br.s       IL_0329
  IL_02e9:  ldstr      "lamps"
  IL_02ee:  stloc.0
  IL_02ef:  br.s       IL_0329
  IL_02f1:  ldstr      "lambs"
  IL_02f6:  stloc.0
  IL_02f7:  br.s       IL_0329
  IL_02f9:  ldstr      "lower"
  IL_02fe:  stloc.0
  IL_02ff:  br.s       IL_0329
  IL_0301:  ldstr      "names"
  IL_0306:  stloc.0
  IL_0307:  br.s       IL_0329
  IL_0309:  ldstr      "slurp"
  IL_030e:  stloc.0
  IL_030f:  br.s       IL_0329
  IL_0311:  ldstr      "towed"
  IL_0316:  stloc.0
  IL_0317:  br.s       IL_0329
  IL_0319:  ldstr      "words"
  IL_031e:  stloc.0
  IL_031f:  br.s       IL_0329
  IL_0321:  ldstr      "default"
  IL_0326:  stloc.0
  IL_0327:  br.s       IL_0329
  IL_0329:  ldc.i4.1
  IL_032a:  brtrue.s   IL_032d
  IL_032c:  nop
  IL_032d:  ldloc.0
  IL_032e:  stloc.2
  IL_032f:  br.s       IL_0331
  IL_0331:  ldloc.2
  IL_0332:  ret
}
""");
    }
 
    [InlineData(true)]
    [InlineData(false)]
    [Theory, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void MixOfBucketSizes_Span(bool useReadonly)
    {
        var keyType = useReadonly ? "System.ReadOnlySpan<char>" : "System.Span<char>";
        var source = $$"""
assert("", "blank");
assert("a", "a");
assert("b", "b");
assert("c", "c");
assert("no");
assert("yes");
assert("four");
assert("blurb");
assert("hello");
assert("lamps");
assert("lambs");
assert("names");
assert("slurp");
assert("towed");
assert("words");
assert("not", "default");
assert("other", "default");
assert("y", "default");
assert("longer example", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    var inputAsKeyType = new {{keyType}}(input.ToCharArray());
    var result = C.M(inputAsKeyType);
    if (result != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {result}");
    }
}
 
public class C
{
    public static string M({{keyType}} o)
    {
        return o switch
        {
            "" => "blank",
            "a" => "a",
            "b" => "b",
            "c" => "c",
            "no" => "no",
            "yes" => "yes",
            "four" => "four",
            "alice" => "alice",
            "blurb" => "blurb",
            "hello" => "hello",
            "lamps" => "lamps",
            "lambs" => "lambs",
            "lower" => "lower",
            "names" => "names",
            "slurp" => "slurp",
            "towed" => "towed",
            "words" => "words",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilationWithSpanAndMemoryExtensions(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN", verify: Verification.Skipped);
        var indexer = useReadonly ? $$"""ref readonly char {{keyType}}.this[int].get""" : $$"""ref char {{keyType}}.this[int].get""";
        verifier.VerifyMemberInIL(PrivateImplementationDetails.SynthesizedStringHashFunctionName + "(string)", expected: false);
        verifier.VerifyIL("C.M", $$"""
{
  // Code size      648 (0x288)
  .maxstack  2
  .locals init (string V_0,
                int V_1,
                char V_2)
  IL_0000:  ldarga.s   V_0
  IL_0002:  call       "int {{keyType}}.Length.get"
  IL_0007:  stloc.1
  IL_0008:  ldloc.1
  IL_0009:  switch    (
        IL_01f5,
        IL_002b,
        IL_00ad,
        IL_00c7,
        IL_00e1,
        IL_004f)
  IL_0026:  br         IL_0280
  IL_002b:  ldarga.s   V_0
  IL_002d:  ldc.i4.0
  IL_002e:  call       "{{indexer}}"
  IL_0033:  ldind.u2
  IL_0034:  stloc.2
  IL_0035:  ldloc.2
  IL_0036:  ldc.i4.s   97
  IL_0038:  sub
  IL_0039:  switch    (
        IL_0200,
        IL_0208,
        IL_0210)
  IL_004a:  br         IL_0280
  IL_004f:  ldarga.s   V_0
  IL_0051:  ldc.i4.0
  IL_0052:  call       "{{indexer}}"
  IL_0057:  ldind.u2
  IL_0058:  stloc.2
  IL_0059:  ldloc.2
  IL_005a:  ldc.i4.s   104
  IL_005c:  bgt.un.s   IL_007b
  IL_005e:  ldloc.2
  IL_005f:  ldc.i4.s   97
  IL_0061:  beq        IL_00fb
  IL_0066:  ldloc.2
  IL_0067:  ldc.i4.s   98
  IL_0069:  beq        IL_0115
  IL_006e:  ldloc.2
  IL_006f:  ldc.i4.s   104
  IL_0071:  beq        IL_012f
  IL_0076:  br         IL_0280
  IL_007b:  ldloc.2
  IL_007c:  ldc.i4.s   108
  IL_007e:  beq        IL_0149
  IL_0083:  ldloc.2
  IL_0084:  ldc.i4.s   110
  IL_0086:  beq        IL_018d
  IL_008b:  ldloc.2
  IL_008c:  ldc.i4.s   115
  IL_008e:  sub
  IL_008f:  switch    (
        IL_01a7,
        IL_01c1,
        IL_0280,
        IL_0280,
        IL_01db)
  IL_00a8:  br         IL_0280
  IL_00ad:  ldarg.0
  IL_00ae:  ldstr      "no"
  IL_00b3:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_00b8:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_00bd:  brtrue     IL_0218
  IL_00c2:  br         IL_0280
  IL_00c7:  ldarg.0
  IL_00c8:  ldstr      "yes"
  IL_00cd:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_00d2:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_00d7:  brtrue     IL_0220
  IL_00dc:  br         IL_0280
  IL_00e1:  ldarg.0
  IL_00e2:  ldstr      "four"
  IL_00e7:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_00ec:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_00f1:  brtrue     IL_0228
  IL_00f6:  br         IL_0280
  IL_00fb:  ldarg.0
  IL_00fc:  ldstr      "alice"
  IL_0101:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0106:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_010b:  brtrue     IL_0230
  IL_0110:  br         IL_0280
  IL_0115:  ldarg.0
  IL_0116:  ldstr      "blurb"
  IL_011b:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0120:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_0125:  brtrue     IL_0238
  IL_012a:  br         IL_0280
  IL_012f:  ldarg.0
  IL_0130:  ldstr      "hello"
  IL_0135:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_013a:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_013f:  brtrue     IL_0240
  IL_0144:  br         IL_0280
  IL_0149:  ldarg.0
  IL_014a:  ldstr      "lamps"
  IL_014f:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0154:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_0159:  brtrue     IL_0248
  IL_015e:  ldarg.0
  IL_015f:  ldstr      "lambs"
  IL_0164:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0169:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_016e:  brtrue     IL_0250
  IL_0173:  ldarg.0
  IL_0174:  ldstr      "lower"
  IL_0179:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_017e:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_0183:  brtrue     IL_0258
  IL_0188:  br         IL_0280
  IL_018d:  ldarg.0
  IL_018e:  ldstr      "names"
  IL_0193:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0198:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_019d:  brtrue     IL_0260
  IL_01a2:  br         IL_0280
  IL_01a7:  ldarg.0
  IL_01a8:  ldstr      "slurp"
  IL_01ad:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_01b2:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_01b7:  brtrue     IL_0268
  IL_01bc:  br         IL_0280
  IL_01c1:  ldarg.0
  IL_01c2:  ldstr      "towed"
  IL_01c7:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_01cc:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_01d1:  brtrue     IL_0270
  IL_01d6:  br         IL_0280
  IL_01db:  ldarg.0
  IL_01dc:  ldstr      "words"
  IL_01e1:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_01e6:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_01eb:  brtrue     IL_0278
  IL_01f0:  br         IL_0280
  IL_01f5:  ldstr      "blank"
  IL_01fa:  stloc.0
  IL_01fb:  br         IL_0286
  IL_0200:  ldstr      "a"
  IL_0205:  stloc.0
  IL_0206:  br.s       IL_0286
  IL_0208:  ldstr      "b"
  IL_020d:  stloc.0
  IL_020e:  br.s       IL_0286
  IL_0210:  ldstr      "c"
  IL_0215:  stloc.0
  IL_0216:  br.s       IL_0286
  IL_0218:  ldstr      "no"
  IL_021d:  stloc.0
  IL_021e:  br.s       IL_0286
  IL_0220:  ldstr      "yes"
  IL_0225:  stloc.0
  IL_0226:  br.s       IL_0286
  IL_0228:  ldstr      "four"
  IL_022d:  stloc.0
  IL_022e:  br.s       IL_0286
  IL_0230:  ldstr      "alice"
  IL_0235:  stloc.0
  IL_0236:  br.s       IL_0286
  IL_0238:  ldstr      "blurb"
  IL_023d:  stloc.0
  IL_023e:  br.s       IL_0286
  IL_0240:  ldstr      "hello"
  IL_0245:  stloc.0
  IL_0246:  br.s       IL_0286
  IL_0248:  ldstr      "lamps"
  IL_024d:  stloc.0
  IL_024e:  br.s       IL_0286
  IL_0250:  ldstr      "lambs"
  IL_0255:  stloc.0
  IL_0256:  br.s       IL_0286
  IL_0258:  ldstr      "lower"
  IL_025d:  stloc.0
  IL_025e:  br.s       IL_0286
  IL_0260:  ldstr      "names"
  IL_0265:  stloc.0
  IL_0266:  br.s       IL_0286
  IL_0268:  ldstr      "slurp"
  IL_026d:  stloc.0
  IL_026e:  br.s       IL_0286
  IL_0270:  ldstr      "towed"
  IL_0275:  stloc.0
  IL_0276:  br.s       IL_0286
  IL_0278:  ldstr      "words"
  IL_027d:  stloc.0
  IL_027e:  br.s       IL_0286
  IL_0280:  ldstr      "default"
  IL_0285:  stloc.0
  IL_0286:  ldloc.0
  IL_0287:  ret
}
""");
 
        comp = CreateCompilationWithSpanAndMemoryExtensions(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        var helper = useReadonly ? "ComputeReadOnlySpanHash(System.ReadOnlySpan<char>)" : "ComputeSpanHash(System.Span<char>)";
        verifier.VerifyMemberInIL("<PrivateImplementationDetails>." + helper, expected: true);
        verifier.VerifyIL("C.M", $$"""
{
  // Code size      861 (0x35d)
  .maxstack  2
  .locals init (string V_0,
                uint V_1)
  IL_0000:  ldarg.0
  IL_0001:  call       "uint <PrivateImplementationDetails>.{{helper}}"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  ldc.i4     0x62366ffa
  IL_000d:  bgt.un     IL_0096
  IL_0012:  ldloc.1
  IL_0013:  ldc.i4     0x3ec721c0
  IL_0018:  bgt.un.s   IL_0058
  IL_001a:  ldloc.1
  IL_001b:  ldc.i4     0x2f69f5a5
  IL_0020:  bgt.un.s   IL_003d
  IL_0022:  ldloc.1
  IL_0023:  ldc.i4     0x242602e6
  IL_0028:  beq        IL_022e
  IL_002d:  ldloc.1
  IL_002e:  ldc.i4     0x2f69f5a5
  IL_0033:  beq        IL_01ac
  IL_0038:  br         IL_0355
  IL_003d:  ldloc.1
  IL_003e:  ldc.i4     0x3448ae58
  IL_0043:  beq        IL_0214
  IL_0048:  ldloc.1
  IL_0049:  ldc.i4     0x3ec721c0
  IL_004e:  beq        IL_0296
  IL_0053:  br         IL_0355
  IL_0058:  ldloc.1
  IL_0059:  ldc.i4     0x4f9f2cab
  IL_005e:  bgt.un.s   IL_007b
  IL_0060:  ldloc.1
  IL_0061:  ldc.i4     0x4e9f3590
  IL_0066:  beq        IL_0192
  IL_006b:  ldloc.1
  IL_006c:  ldc.i4     0x4f9f2cab
  IL_0071:  beq        IL_01fa
  IL_0076:  br         IL_0355
  IL_007b:  ldloc.1
  IL_007c:  ldc.i4     0x5cb7aa8a
  IL_0081:  beq        IL_02b0
  IL_0086:  ldloc.1
  IL_0087:  ldc.i4     0x62366ffa
  IL_008c:  beq        IL_0178
  IL_0091:  br         IL_0355
  IL_0096:  ldloc.1
  IL_0097:  ldc.i4     0xb51d04ba
  IL_009c:  bgt.un.s   IL_00d9
  IL_009e:  ldloc.1
  IL_009f:  ldc.i4     0x811c9dc5
  IL_00a4:  bgt.un.s   IL_00be
  IL_00a6:  ldloc.1
  IL_00a7:  ldc.i4     0x63cb5a27
  IL_00ac:  beq        IL_027c
  IL_00b1:  ldloc.1
  IL_00b2:  ldc.i4     0x811c9dc5
  IL_00b7:  beq.s      IL_0119
  IL_00b9:  br         IL_0355
  IL_00be:  ldloc.1
  IL_00bf:  ldc.i4     0x872213e7
  IL_00c4:  beq        IL_01c6
  IL_00c9:  ldloc.1
  IL_00ca:  ldc.i4     0xb51d04ba
  IL_00cf:  beq        IL_0248
  IL_00d4:  br         IL_0355
  IL_00d9:  ldloc.1
  IL_00da:  ldc.i4     0xe60c2c52
  IL_00df:  bgt.un.s   IL_00f6
  IL_00e1:  ldloc.1
  IL_00e2:  ldc.i4     0xe40c292c
  IL_00e7:  beq.s      IL_012a
  IL_00e9:  ldloc.1
  IL_00ea:  ldc.i4     0xe60c2c52
  IL_00ef:  beq.s      IL_015e
  IL_00f1:  br         IL_0355
  IL_00f6:  ldloc.1
  IL_00f7:  ldc.i4     0xe6e5718f
  IL_00fc:  beq        IL_0262
  IL_0101:  ldloc.1
  IL_0102:  ldc.i4     0xe70c2de5
  IL_0107:  beq.s      IL_0144
  IL_0109:  ldloc.1
  IL_010a:  ldc.i4     0xf76b8c8e
  IL_010f:  beq        IL_01e0
  IL_0114:  br         IL_0355
  IL_0119:  ldarga.s   V_0
  IL_011b:  call       "int {{keyType}}.Length.get"
  IL_0120:  brfalse    IL_02ca
  IL_0125:  br         IL_0355
  IL_012a:  ldarg.0
  IL_012b:  ldstr      "a"
  IL_0130:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0135:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_013a:  brtrue     IL_02d5
  IL_013f:  br         IL_0355
  IL_0144:  ldarg.0
  IL_0145:  ldstr      "b"
  IL_014a:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_014f:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_0154:  brtrue     IL_02dd
  IL_0159:  br         IL_0355
  IL_015e:  ldarg.0
  IL_015f:  ldstr      "c"
  IL_0164:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0169:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_016e:  brtrue     IL_02e5
  IL_0173:  br         IL_0355
  IL_0178:  ldarg.0
  IL_0179:  ldstr      "no"
  IL_017e:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0183:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_0188:  brtrue     IL_02ed
  IL_018d:  br         IL_0355
  IL_0192:  ldarg.0
  IL_0193:  ldstr      "yes"
  IL_0198:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_019d:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_01a2:  brtrue     IL_02f5
  IL_01a7:  br         IL_0355
  IL_01ac:  ldarg.0
  IL_01ad:  ldstr      "four"
  IL_01b2:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_01b7:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_01bc:  brtrue     IL_02fd
  IL_01c1:  br         IL_0355
  IL_01c6:  ldarg.0
  IL_01c7:  ldstr      "alice"
  IL_01cc:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_01d1:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_01d6:  brtrue     IL_0305
  IL_01db:  br         IL_0355
  IL_01e0:  ldarg.0
  IL_01e1:  ldstr      "blurb"
  IL_01e6:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_01eb:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_01f0:  brtrue     IL_030d
  IL_01f5:  br         IL_0355
  IL_01fa:  ldarg.0
  IL_01fb:  ldstr      "hello"
  IL_0200:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0205:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_020a:  brtrue     IL_0315
  IL_020f:  br         IL_0355
  IL_0214:  ldarg.0
  IL_0215:  ldstr      "lamps"
  IL_021a:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_021f:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_0224:  brtrue     IL_031d
  IL_0229:  br         IL_0355
  IL_022e:  ldarg.0
  IL_022f:  ldstr      "lambs"
  IL_0234:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0239:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_023e:  brtrue     IL_0325
  IL_0243:  br         IL_0355
  IL_0248:  ldarg.0
  IL_0249:  ldstr      "lower"
  IL_024e:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0253:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_0258:  brtrue     IL_032d
  IL_025d:  br         IL_0355
  IL_0262:  ldarg.0
  IL_0263:  ldstr      "names"
  IL_0268:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_026d:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_0272:  brtrue     IL_0335
  IL_0277:  br         IL_0355
  IL_027c:  ldarg.0
  IL_027d:  ldstr      "slurp"
  IL_0282:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0287:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_028c:  brtrue     IL_033d
  IL_0291:  br         IL_0355
  IL_0296:  ldarg.0
  IL_0297:  ldstr      "towed"
  IL_029c:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_02a1:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_02a6:  brtrue     IL_0345
  IL_02ab:  br         IL_0355
  IL_02b0:  ldarg.0
  IL_02b1:  ldstr      "words"
  IL_02b6:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_02bb:  call       "bool System.MemoryExtensions.SequenceEqual<char>({{keyType}}, System.ReadOnlySpan<char>)"
  IL_02c0:  brtrue     IL_034d
  IL_02c5:  br         IL_0355
  IL_02ca:  ldstr      "blank"
  IL_02cf:  stloc.0
  IL_02d0:  br         IL_035b
  IL_02d5:  ldstr      "a"
  IL_02da:  stloc.0
  IL_02db:  br.s       IL_035b
  IL_02dd:  ldstr      "b"
  IL_02e2:  stloc.0
  IL_02e3:  br.s       IL_035b
  IL_02e5:  ldstr      "c"
  IL_02ea:  stloc.0
  IL_02eb:  br.s       IL_035b
  IL_02ed:  ldstr      "no"
  IL_02f2:  stloc.0
  IL_02f3:  br.s       IL_035b
  IL_02f5:  ldstr      "yes"
  IL_02fa:  stloc.0
  IL_02fb:  br.s       IL_035b
  IL_02fd:  ldstr      "four"
  IL_0302:  stloc.0
  IL_0303:  br.s       IL_035b
  IL_0305:  ldstr      "alice"
  IL_030a:  stloc.0
  IL_030b:  br.s       IL_035b
  IL_030d:  ldstr      "blurb"
  IL_0312:  stloc.0
  IL_0313:  br.s       IL_035b
  IL_0315:  ldstr      "hello"
  IL_031a:  stloc.0
  IL_031b:  br.s       IL_035b
  IL_031d:  ldstr      "lamps"
  IL_0322:  stloc.0
  IL_0323:  br.s       IL_035b
  IL_0325:  ldstr      "lambs"
  IL_032a:  stloc.0
  IL_032b:  br.s       IL_035b
  IL_032d:  ldstr      "lower"
  IL_0332:  stloc.0
  IL_0333:  br.s       IL_035b
  IL_0335:  ldstr      "names"
  IL_033a:  stloc.0
  IL_033b:  br.s       IL_035b
  IL_033d:  ldstr      "slurp"
  IL_0342:  stloc.0
  IL_0343:  br.s       IL_035b
  IL_0345:  ldstr      "towed"
  IL_034a:  stloc.0
  IL_034b:  br.s       IL_035b
  IL_034d:  ldstr      "words"
  IL_0352:  stloc.0
  IL_0353:  br.s       IL_035b
  IL_0355:  ldstr      "default"
  IL_035a:  stloc.0
  IL_035b:  ldloc.0
  IL_035c:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void TwoNullCases()
    {
        var source = """
public class C
{
    public static string M(object o)
    {
        return o switch
        {
            null => "null1",
            null => "null2",
            "" => "blank",
            "a" => "a",
            "b" => "b",
            "c" => "c",
            "no" => "no",
            "yes" => "yes",
            "four" => "four",
            "alice" => "alice",
            "blurb" => "blurb",
            "hello" => "hello",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyEmitDiagnostics(
            // (8,13): error CS8510: The pattern is unreachable. It has already been handled by a previous arm of the switch expression or it is impossible to match.
            //             null => "null2",
            Diagnostic(ErrorCode.ERR_SwitchArmSubsumed, "null").WithLocation(8, 13)
            );
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void BucketSizeOne()
    {
        var source = """
assert(null, "default");
assert("", "default");
assert("a");
assert("b", "default");
assert("ab");
assert("abc");
assert("abcd");
assert("abcde");
assert("abcdef");
assert("not", "default");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(object o)
    {
        return o switch
        {
            "a" => "a",
            "ab" => "ab",
            "abc" => "abc",
            "abcd" => "abcd",
            "abcde" => "abcde",
            "abcdef" => "abcdef",
            "abcdefg" => "abcdefg",
            "abcdefgh" => "abcdefgh",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyMemberInIL(PrivateImplementationDetails.SynthesizedStringHashFunctionName + "(string)", expected: false);
        verifier.VerifyIL("C.M", """
{
  // Code size      272 (0x110)
  .maxstack  2
  .locals init (string V_0,
                string V_1,
                int V_2,
                char V_3)
  IL_0000:  ldarg.0
  IL_0001:  isinst     "string"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  brfalse    IL_0108
  IL_000d:  ldloc.1
  IL_000e:  brfalse    IL_0108
  IL_0013:  ldloc.1
  IL_0014:  call       "int string.Length.get"
  IL_0019:  stloc.2
  IL_001a:  ldloc.2
  IL_001b:  ldc.i4.1
  IL_001c:  sub
  IL_001d:  switch    (
        IL_0047,
        IL_0059,
        IL_006b,
        IL_007d,
        IL_008c,
        IL_009b,
        IL_00aa,
        IL_00b9)
  IL_0042:  br         IL_0108
  IL_0047:  ldloc.1
  IL_0048:  ldstr      "a"
  IL_004d:  call       "bool string.op_Equality(string, string)"
  IL_0052:  brtrue.s   IL_00c8
  IL_0054:  br         IL_0108
  IL_0059:  ldloc.1
  IL_005a:  ldstr      "ab"
  IL_005f:  call       "bool string.op_Equality(string, string)"
  IL_0064:  brtrue.s   IL_00d0
  IL_0066:  br         IL_0108
  IL_006b:  ldloc.1
  IL_006c:  ldstr      "abc"
  IL_0071:  call       "bool string.op_Equality(string, string)"
  IL_0076:  brtrue.s   IL_00d8
  IL_0078:  br         IL_0108
  IL_007d:  ldloc.1
  IL_007e:  ldstr      "abcd"
  IL_0083:  call       "bool string.op_Equality(string, string)"
  IL_0088:  brtrue.s   IL_00e0
  IL_008a:  br.s       IL_0108
  IL_008c:  ldloc.1
  IL_008d:  ldstr      "abcde"
  IL_0092:  call       "bool string.op_Equality(string, string)"
  IL_0097:  brtrue.s   IL_00e8
  IL_0099:  br.s       IL_0108
  IL_009b:  ldloc.1
  IL_009c:  ldstr      "abcdef"
  IL_00a1:  call       "bool string.op_Equality(string, string)"
  IL_00a6:  brtrue.s   IL_00f0
  IL_00a8:  br.s       IL_0108
  IL_00aa:  ldloc.1
  IL_00ab:  ldstr      "abcdefg"
  IL_00b0:  call       "bool string.op_Equality(string, string)"
  IL_00b5:  brtrue.s   IL_00f8
  IL_00b7:  br.s       IL_0108
  IL_00b9:  ldloc.1
  IL_00ba:  ldstr      "abcdefgh"
  IL_00bf:  call       "bool string.op_Equality(string, string)"
  IL_00c4:  brtrue.s   IL_0100
  IL_00c6:  br.s       IL_0108
  IL_00c8:  ldstr      "a"
  IL_00cd:  stloc.0
  IL_00ce:  br.s       IL_010e
  IL_00d0:  ldstr      "ab"
  IL_00d5:  stloc.0
  IL_00d6:  br.s       IL_010e
  IL_00d8:  ldstr      "abc"
  IL_00dd:  stloc.0
  IL_00de:  br.s       IL_010e
  IL_00e0:  ldstr      "abcd"
  IL_00e5:  stloc.0
  IL_00e6:  br.s       IL_010e
  IL_00e8:  ldstr      "abcde"
  IL_00ed:  stloc.0
  IL_00ee:  br.s       IL_010e
  IL_00f0:  ldstr      "abcdef"
  IL_00f5:  stloc.0
  IL_00f6:  br.s       IL_010e
  IL_00f8:  ldstr      "abcdefg"
  IL_00fd:  stloc.0
  IL_00fe:  br.s       IL_010e
  IL_0100:  ldstr      "abcdefgh"
  IL_0105:  stloc.0
  IL_0106:  br.s       IL_010e
  IL_0108:  ldstr      "default"
  IL_010d:  stloc.0
  IL_010e:  ldloc.0
  IL_010f:  ret
}
""");
 
        comp = CreateCompilation(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyMemberInIL("<PrivateImplementationDetails>." + PrivateImplementationDetails.SynthesizedStringHashFunctionName + "(string)", expected: true);
        verifier.VerifyIL("C.M", """
{
  // Code size      335 (0x14f)
  .maxstack  2
  .locals init (string V_0,
                string V_1,
                uint V_2)
  IL_0000:  ldarg.0
  IL_0001:  isinst     "string"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  brfalse    IL_0147
  IL_000d:  ldloc.1
  IL_000e:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0013:  stloc.2
  IL_0014:  ldloc.2
  IL_0015:  ldc.i4     0x749bcf08
  IL_001a:  bgt.un.s   IL_0051
  IL_001c:  ldloc.2
  IL_001d:  ldc.i4     0x2a9eb737
  IL_0022:  bgt.un.s   IL_003c
  IL_0024:  ldloc.2
  IL_0025:  ldc.i4     0x1a47e90b
  IL_002a:  beq.s      IL_00aa
  IL_002c:  ldloc.2
  IL_002d:  ldc.i4     0x2a9eb737
  IL_0032:  beq        IL_00e9
  IL_0037:  br         IL_0147
  IL_003c:  ldloc.2
  IL_003d:  ldc.i4     0x4d2505ca
  IL_0042:  beq.s      IL_0098
  IL_0044:  ldloc.2
  IL_0045:  ldc.i4     0x749bcf08
  IL_004a:  beq.s      IL_00cb
  IL_004c:  br         IL_0147
  IL_0051:  ldloc.2
  IL_0052:  ldc.i4     0xce3479bd
  IL_0057:  bgt.un.s   IL_0071
  IL_0059:  ldloc.2
  IL_005a:  ldc.i4     0x76daaa8d
  IL_005f:  beq        IL_00f8
  IL_0064:  ldloc.2
  IL_0065:  ldc.i4     0xce3479bd
  IL_006a:  beq.s      IL_00bc
  IL_006c:  br         IL_0147
  IL_0071:  ldloc.2
  IL_0072:  ldc.i4     0xe40c292c
  IL_0077:  beq.s      IL_0086
  IL_0079:  ldloc.2
  IL_007a:  ldc.i4     0xff478a2a
  IL_007f:  beq.s      IL_00da
  IL_0081:  br         IL_0147
  IL_0086:  ldloc.1
  IL_0087:  ldstr      "a"
  IL_008c:  call       "bool string.op_Equality(string, string)"
  IL_0091:  brtrue.s   IL_0107
  IL_0093:  br         IL_0147
  IL_0098:  ldloc.1
  IL_0099:  ldstr      "ab"
  IL_009e:  call       "bool string.op_Equality(string, string)"
  IL_00a3:  brtrue.s   IL_010f
  IL_00a5:  br         IL_0147
  IL_00aa:  ldloc.1
  IL_00ab:  ldstr      "abc"
  IL_00b0:  call       "bool string.op_Equality(string, string)"
  IL_00b5:  brtrue.s   IL_0117
  IL_00b7:  br         IL_0147
  IL_00bc:  ldloc.1
  IL_00bd:  ldstr      "abcd"
  IL_00c2:  call       "bool string.op_Equality(string, string)"
  IL_00c7:  brtrue.s   IL_011f
  IL_00c9:  br.s       IL_0147
  IL_00cb:  ldloc.1
  IL_00cc:  ldstr      "abcde"
  IL_00d1:  call       "bool string.op_Equality(string, string)"
  IL_00d6:  brtrue.s   IL_0127
  IL_00d8:  br.s       IL_0147
  IL_00da:  ldloc.1
  IL_00db:  ldstr      "abcdef"
  IL_00e0:  call       "bool string.op_Equality(string, string)"
  IL_00e5:  brtrue.s   IL_012f
  IL_00e7:  br.s       IL_0147
  IL_00e9:  ldloc.1
  IL_00ea:  ldstr      "abcdefg"
  IL_00ef:  call       "bool string.op_Equality(string, string)"
  IL_00f4:  brtrue.s   IL_0137
  IL_00f6:  br.s       IL_0147
  IL_00f8:  ldloc.1
  IL_00f9:  ldstr      "abcdefgh"
  IL_00fe:  call       "bool string.op_Equality(string, string)"
  IL_0103:  brtrue.s   IL_013f
  IL_0105:  br.s       IL_0147
  IL_0107:  ldstr      "a"
  IL_010c:  stloc.0
  IL_010d:  br.s       IL_014d
  IL_010f:  ldstr      "ab"
  IL_0114:  stloc.0
  IL_0115:  br.s       IL_014d
  IL_0117:  ldstr      "abc"
  IL_011c:  stloc.0
  IL_011d:  br.s       IL_014d
  IL_011f:  ldstr      "abcd"
  IL_0124:  stloc.0
  IL_0125:  br.s       IL_014d
  IL_0127:  ldstr      "abcde"
  IL_012c:  stloc.0
  IL_012d:  br.s       IL_014d
  IL_012f:  ldstr      "abcdef"
  IL_0134:  stloc.0
  IL_0135:  br.s       IL_014d
  IL_0137:  ldstr      "abcdefg"
  IL_013c:  stloc.0
  IL_013d:  br.s       IL_014d
  IL_013f:  ldstr      "abcdefgh"
  IL_0144:  stloc.0
  IL_0145:  br.s       IL_014d
  IL_0147:  ldstr      "default"
  IL_014c:  stloc.0
  IL_014d:  ldloc.0
  IL_014e:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void BucketSizeOne_WithIntValues()
    {
        var source = """
assert(null, "default");
assert("", "default");
assert("a");
assert("b", "default");
assert("ab");
assert("abc");
assert("abcd");
assert("abcde");
assert("abcdef");
assert("not", "default");
assert("other", "default");
assert(0, "0");
assert(1, "default");
System.Console.Write("RAN");
 
void assert(object input, string expected = null)
{
    if (C.M(input) != (expected ?? input.ToString()))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(object o)
    {
        return o switch
        {
            "a" => "a",
            "ab" => "ab",
            "abc" => "abc",
            "abcd" => "abcd",
            "abcde" => "abcde",
            "abcdef" => "abcdef",
            "abcdefg" => "abcdefg",
            "abcdefgh" => "abcdefgh",
            0 => "0",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyMemberInIL(PrivateImplementationDetails.SynthesizedStringHashFunctionName + "(string)", expected: false);
        verifier.VerifyIL("C.M", """
{
  // Code size      310 (0x136)
  .maxstack  2
  .locals init (string V_0,
                string V_1,
                int V_2,
                char V_3)
  IL_0000:  ldarg.0
  IL_0001:  isinst     "string"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  brfalse    IL_00d4
  IL_000d:  ldloc.1
  IL_000e:  brfalse    IL_012e
  IL_0013:  ldloc.1
  IL_0014:  call       "int string.Length.get"
  IL_0019:  stloc.2
  IL_001a:  ldloc.2
  IL_001b:  ldc.i4.1
  IL_001c:  sub
  IL_001d:  switch    (
        IL_0047,
        IL_005c,
        IL_0071,
        IL_0083,
        IL_0095,
        IL_00a7,
        IL_00b6,
        IL_00c5)
  IL_0042:  br         IL_012e
  IL_0047:  ldloc.1
  IL_0048:  ldstr      "a"
  IL_004d:  call       "bool string.op_Equality(string, string)"
  IL_0052:  brtrue     IL_00e6
  IL_0057:  br         IL_012e
  IL_005c:  ldloc.1
  IL_005d:  ldstr      "ab"
  IL_0062:  call       "bool string.op_Equality(string, string)"
  IL_0067:  brtrue     IL_00ee
  IL_006c:  br         IL_012e
  IL_0071:  ldloc.1
  IL_0072:  ldstr      "abc"
  IL_0077:  call       "bool string.op_Equality(string, string)"
  IL_007c:  brtrue.s   IL_00f6
  IL_007e:  br         IL_012e
  IL_0083:  ldloc.1
  IL_0084:  ldstr      "abcd"
  IL_0089:  call       "bool string.op_Equality(string, string)"
  IL_008e:  brtrue.s   IL_00fe
  IL_0090:  br         IL_012e
  IL_0095:  ldloc.1
  IL_0096:  ldstr      "abcde"
  IL_009b:  call       "bool string.op_Equality(string, string)"
  IL_00a0:  brtrue.s   IL_0106
  IL_00a2:  br         IL_012e
  IL_00a7:  ldloc.1
  IL_00a8:  ldstr      "abcdef"
  IL_00ad:  call       "bool string.op_Equality(string, string)"
  IL_00b2:  brtrue.s   IL_010e
  IL_00b4:  br.s       IL_012e
  IL_00b6:  ldloc.1
  IL_00b7:  ldstr      "abcdefg"
  IL_00bc:  call       "bool string.op_Equality(string, string)"
  IL_00c1:  brtrue.s   IL_0116
  IL_00c3:  br.s       IL_012e
  IL_00c5:  ldloc.1
  IL_00c6:  ldstr      "abcdefgh"
  IL_00cb:  call       "bool string.op_Equality(string, string)"
  IL_00d0:  brtrue.s   IL_011e
  IL_00d2:  br.s       IL_012e
  IL_00d4:  ldarg.0
  IL_00d5:  isinst     "int"
  IL_00da:  brfalse.s  IL_012e
  IL_00dc:  ldarg.0
  IL_00dd:  unbox.any  "int"
  IL_00e2:  brfalse.s  IL_0126
  IL_00e4:  br.s       IL_012e
  IL_00e6:  ldstr      "a"
  IL_00eb:  stloc.0
  IL_00ec:  br.s       IL_0134
  IL_00ee:  ldstr      "ab"
  IL_00f3:  stloc.0
  IL_00f4:  br.s       IL_0134
  IL_00f6:  ldstr      "abc"
  IL_00fb:  stloc.0
  IL_00fc:  br.s       IL_0134
  IL_00fe:  ldstr      "abcd"
  IL_0103:  stloc.0
  IL_0104:  br.s       IL_0134
  IL_0106:  ldstr      "abcde"
  IL_010b:  stloc.0
  IL_010c:  br.s       IL_0134
  IL_010e:  ldstr      "abcdef"
  IL_0113:  stloc.0
  IL_0114:  br.s       IL_0134
  IL_0116:  ldstr      "abcdefg"
  IL_011b:  stloc.0
  IL_011c:  br.s       IL_0134
  IL_011e:  ldstr      "abcdefgh"
  IL_0123:  stloc.0
  IL_0124:  br.s       IL_0134
  IL_0126:  ldstr      "0"
  IL_012b:  stloc.0
  IL_012c:  br.s       IL_0134
  IL_012e:  ldstr      "default"
  IL_0133:  stloc.0
  IL_0134:  ldloc.0
  IL_0135:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    internal void BucketSizeOne_MissingStringLength()
    {
        var source = """
public class C
{
    public static string M(string o)
    {
        return o switch
        {
            "a" => "a",
            "ab" => "ab",
            "abc" => "abc",
            "abcd" => "abcd",
            "abcde" => "abcde",
            "abcdef" => "abcdef",
            "abcdefg" => "abcdefg",
            "abcdefgh" => "abcdefgh",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.MakeMemberMissing(SpecialMember.System_String__Length);
        comp.VerifyEmitDiagnostics(
            // error CS0656: Missing compiler required member 'System.String.get_Length'
            //
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, "").WithArguments("System.String", "get_Length").WithLocation(1, 1)
            );
 
        comp = CreateCompilation(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.MakeMemberMissing(SpecialMember.System_String__Length);
        comp.VerifyEmitDiagnostics(
            // error CS0656: Missing compiler required member 'System.String.get_Length'
            //
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, "").WithArguments("System.String", "get_Length").WithLocation(1, 1)
            );
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    internal void BucketSizeOne_MissingStringIndexer()
    {
        var source = """
public class C
{
    public static string M(string o)
    {
        return o switch
        {
            "a" => "a",
            "ab" => "ab",
            "abc" => "abc",
            "abcd" => "abcd",
            "abcde" => "abcde",
            "abcdef" => "abcdef",
            "abcdefg" => "abcdefg",
            "abcdefgh" => "abcdefgh",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.MakeMemberMissing(SpecialMember.System_String__Chars);
        comp.VerifyEmitDiagnostics();
 
        var verifier = CompileAndVerify(comp);
        verifier.VerifyMemberInIL(PrivateImplementationDetails.SynthesizedStringHashFunctionName + "(string)", expected: false);
        verifier.VerifyIL("C.M", """
{
  // Code size      178 (0xb2)
  .maxstack  2
  .locals init (string V_0)
  IL_0000:  ldarg.0
  IL_0001:  ldstr      "a"
  IL_0006:  call       "bool string.op_Equality(string, string)"
  IL_000b:  brtrue.s   IL_006a
  IL_000d:  ldarg.0
  IL_000e:  ldstr      "ab"
  IL_0013:  call       "bool string.op_Equality(string, string)"
  IL_0018:  brtrue.s   IL_0072
  IL_001a:  ldarg.0
  IL_001b:  ldstr      "abc"
  IL_0020:  call       "bool string.op_Equality(string, string)"
  IL_0025:  brtrue.s   IL_007a
  IL_0027:  ldarg.0
  IL_0028:  ldstr      "abcd"
  IL_002d:  call       "bool string.op_Equality(string, string)"
  IL_0032:  brtrue.s   IL_0082
  IL_0034:  ldarg.0
  IL_0035:  ldstr      "abcde"
  IL_003a:  call       "bool string.op_Equality(string, string)"
  IL_003f:  brtrue.s   IL_008a
  IL_0041:  ldarg.0
  IL_0042:  ldstr      "abcdef"
  IL_0047:  call       "bool string.op_Equality(string, string)"
  IL_004c:  brtrue.s   IL_0092
  IL_004e:  ldarg.0
  IL_004f:  ldstr      "abcdefg"
  IL_0054:  call       "bool string.op_Equality(string, string)"
  IL_0059:  brtrue.s   IL_009a
  IL_005b:  ldarg.0
  IL_005c:  ldstr      "abcdefgh"
  IL_0061:  call       "bool string.op_Equality(string, string)"
  IL_0066:  brtrue.s   IL_00a2
  IL_0068:  br.s       IL_00aa
  IL_006a:  ldstr      "a"
  IL_006f:  stloc.0
  IL_0070:  br.s       IL_00b0
  IL_0072:  ldstr      "ab"
  IL_0077:  stloc.0
  IL_0078:  br.s       IL_00b0
  IL_007a:  ldstr      "abc"
  IL_007f:  stloc.0
  IL_0080:  br.s       IL_00b0
  IL_0082:  ldstr      "abcd"
  IL_0087:  stloc.0
  IL_0088:  br.s       IL_00b0
  IL_008a:  ldstr      "abcde"
  IL_008f:  stloc.0
  IL_0090:  br.s       IL_00b0
  IL_0092:  ldstr      "abcdef"
  IL_0097:  stloc.0
  IL_0098:  br.s       IL_00b0
  IL_009a:  ldstr      "abcdefg"
  IL_009f:  stloc.0
  IL_00a0:  br.s       IL_00b0
  IL_00a2:  ldstr      "abcdefgh"
  IL_00a7:  stloc.0
  IL_00a8:  br.s       IL_00b0
  IL_00aa:  ldstr      "default"
  IL_00af:  stloc.0
  IL_00b0:  ldloc.0
  IL_00b1:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    internal void BucketSizeOne_MissingSpanLength()
    {
        var source = """
public class C
{
    public static string M(System.Span<char> o)
    {
        return o switch
        {
            "a" => "a",
            "ab" => "ab",
            "abc" => "abc",
            "abcd" => "abcd",
            "abcde" => "abcde",
            "abcdef" => "abcdef",
            "abcdefg" => "abcdefg",
            "abcdefgh" => "abcdefgh",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source, targetFramework: TargetFramework.Net70);
        comp.MakeMemberMissing(WellKnownMember.System_Span_T__get_Length);
        comp.VerifyEmitDiagnostics(
            // (7,13): error CS0656: Missing compiler required member 'System.Span`1.get_Length'
            //             "a" => "a",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""a""").WithArguments("System.Span`1", "get_Length").WithLocation(7, 13),
            // (8,13): error CS0656: Missing compiler required member 'System.Span`1.get_Length'
            //             "ab" => "ab",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""ab""").WithArguments("System.Span`1", "get_Length").WithLocation(8, 13),
            // (9,13): error CS0656: Missing compiler required member 'System.Span`1.get_Length'
            //             "abc" => "abc",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abc""").WithArguments("System.Span`1", "get_Length").WithLocation(9, 13),
            // (10,13): error CS0656: Missing compiler required member 'System.Span`1.get_Length'
            //             "abcd" => "abcd",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcd""").WithArguments("System.Span`1", "get_Length").WithLocation(10, 13),
            // (11,13): error CS0656: Missing compiler required member 'System.Span`1.get_Length'
            //             "abcde" => "abcde",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcde""").WithArguments("System.Span`1", "get_Length").WithLocation(11, 13),
            // (12,13): error CS0656: Missing compiler required member 'System.Span`1.get_Length'
            //             "abcdef" => "abcdef",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcdef""").WithArguments("System.Span`1", "get_Length").WithLocation(12, 13),
            // (13,13): error CS0656: Missing compiler required member 'System.Span`1.get_Length'
            //             "abcdefg" => "abcdefg",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcdefg""").WithArguments("System.Span`1", "get_Length").WithLocation(13, 13),
            // (14,13): error CS0656: Missing compiler required member 'System.Span`1.get_Length'
            //             "abcdefgh" => "abcdefgh",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcdefgh""").WithArguments("System.Span`1", "get_Length").WithLocation(14, 13)
            );
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    internal void BucketSizeOne_MissingSpanIndexer()
    {
        var source = """
public class C
{
    public static string M(System.Span<char> o)
    {
        return o switch
        {
            "a" => "a",
            "ab" => "ab",
            "abc" => "abc",
            "abcd" => "abcd",
            "abcde" => "abcde",
            "abcdef" => "abcdef",
            "abcdefg" => "abcdefg",
            "abcdefgh" => "abcdefgh",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source, targetFramework: TargetFramework.Net70);
        comp.MakeMemberMissing(WellKnownMember.System_Span_T__get_Item);
        comp.VerifyEmitDiagnostics();
 
        var verifier = CompileAndVerify(comp, verify: Verification.Skipped);
        verifier.VerifyIL("C.M", """
{
  // Code size      221 (0xdd)
  .maxstack  2
  .locals init (string V_0)
  IL_0000:  ldarg.0
  IL_0001:  ldstr      "a"
  IL_0006:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_000b:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.Span<char>, System.ReadOnlySpan<char>)"
  IL_0010:  brtrue     IL_0095
  IL_0015:  ldarg.0
  IL_0016:  ldstr      "ab"
  IL_001b:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0020:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.Span<char>, System.ReadOnlySpan<char>)"
  IL_0025:  brtrue.s   IL_009d
  IL_0027:  ldarg.0
  IL_0028:  ldstr      "abc"
  IL_002d:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0032:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.Span<char>, System.ReadOnlySpan<char>)"
  IL_0037:  brtrue.s   IL_00a5
  IL_0039:  ldarg.0
  IL_003a:  ldstr      "abcd"
  IL_003f:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0044:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.Span<char>, System.ReadOnlySpan<char>)"
  IL_0049:  brtrue.s   IL_00ad
  IL_004b:  ldarg.0
  IL_004c:  ldstr      "abcde"
  IL_0051:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0056:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.Span<char>, System.ReadOnlySpan<char>)"
  IL_005b:  brtrue.s   IL_00b5
  IL_005d:  ldarg.0
  IL_005e:  ldstr      "abcdef"
  IL_0063:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0068:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.Span<char>, System.ReadOnlySpan<char>)"
  IL_006d:  brtrue.s   IL_00bd
  IL_006f:  ldarg.0
  IL_0070:  ldstr      "abcdefg"
  IL_0075:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_007a:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.Span<char>, System.ReadOnlySpan<char>)"
  IL_007f:  brtrue.s   IL_00c5
  IL_0081:  ldarg.0
  IL_0082:  ldstr      "abcdefgh"
  IL_0087:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_008c:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.Span<char>, System.ReadOnlySpan<char>)"
  IL_0091:  brtrue.s   IL_00cd
  IL_0093:  br.s       IL_00d5
  IL_0095:  ldstr      "a"
  IL_009a:  stloc.0
  IL_009b:  br.s       IL_00db
  IL_009d:  ldstr      "ab"
  IL_00a2:  stloc.0
  IL_00a3:  br.s       IL_00db
  IL_00a5:  ldstr      "abc"
  IL_00aa:  stloc.0
  IL_00ab:  br.s       IL_00db
  IL_00ad:  ldstr      "abcd"
  IL_00b2:  stloc.0
  IL_00b3:  br.s       IL_00db
  IL_00b5:  ldstr      "abcde"
  IL_00ba:  stloc.0
  IL_00bb:  br.s       IL_00db
  IL_00bd:  ldstr      "abcdef"
  IL_00c2:  stloc.0
  IL_00c3:  br.s       IL_00db
  IL_00c5:  ldstr      "abcdefg"
  IL_00ca:  stloc.0
  IL_00cb:  br.s       IL_00db
  IL_00cd:  ldstr      "abcdefgh"
  IL_00d2:  stloc.0
  IL_00d3:  br.s       IL_00db
  IL_00d5:  ldstr      "default"
  IL_00da:  stloc.0
  IL_00db:  ldloc.0
  IL_00dc:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    internal void BucketSizeOne_MissingReadOnlySpanIndexer()
    {
        var source = """
public class C
{
    public static string M(System.ReadOnlySpan<char> o)
    {
        return o switch
        {
            "a" => "a",
            "ab" => "ab",
            "abc" => "abc",
            "abcd" => "abcd",
            "abcde" => "abcde",
            "abcdef" => "abcdef",
            "abcdefg" => "abcdefg",
            "abcdefgh" => "abcdefgh",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source, targetFramework: TargetFramework.Net70);
        comp.MakeMemberMissing(WellKnownMember.System_ReadOnlySpan_T__get_Item);
        comp.VerifyEmitDiagnostics();
 
        var verifier = CompileAndVerify(comp, verify: Verification.Skipped);
        verifier.VerifyIL("C.M", """
{
  // Code size      221 (0xdd)
  .maxstack  2
  .locals init (string V_0)
  IL_0000:  ldarg.0
  IL_0001:  ldstr      "a"
  IL_0006:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_000b:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.ReadOnlySpan<char>, System.ReadOnlySpan<char>)"
  IL_0010:  brtrue     IL_0095
  IL_0015:  ldarg.0
  IL_0016:  ldstr      "ab"
  IL_001b:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0020:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.ReadOnlySpan<char>, System.ReadOnlySpan<char>)"
  IL_0025:  brtrue.s   IL_009d
  IL_0027:  ldarg.0
  IL_0028:  ldstr      "abc"
  IL_002d:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0032:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.ReadOnlySpan<char>, System.ReadOnlySpan<char>)"
  IL_0037:  brtrue.s   IL_00a5
  IL_0039:  ldarg.0
  IL_003a:  ldstr      "abcd"
  IL_003f:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0044:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.ReadOnlySpan<char>, System.ReadOnlySpan<char>)"
  IL_0049:  brtrue.s   IL_00ad
  IL_004b:  ldarg.0
  IL_004c:  ldstr      "abcde"
  IL_0051:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0056:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.ReadOnlySpan<char>, System.ReadOnlySpan<char>)"
  IL_005b:  brtrue.s   IL_00b5
  IL_005d:  ldarg.0
  IL_005e:  ldstr      "abcdef"
  IL_0063:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_0068:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.ReadOnlySpan<char>, System.ReadOnlySpan<char>)"
  IL_006d:  brtrue.s   IL_00bd
  IL_006f:  ldarg.0
  IL_0070:  ldstr      "abcdefg"
  IL_0075:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_007a:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.ReadOnlySpan<char>, System.ReadOnlySpan<char>)"
  IL_007f:  brtrue.s   IL_00c5
  IL_0081:  ldarg.0
  IL_0082:  ldstr      "abcdefgh"
  IL_0087:  call       "System.ReadOnlySpan<char> System.MemoryExtensions.AsSpan(string)"
  IL_008c:  call       "bool System.MemoryExtensions.SequenceEqual<char>(System.ReadOnlySpan<char>, System.ReadOnlySpan<char>)"
  IL_0091:  brtrue.s   IL_00cd
  IL_0093:  br.s       IL_00d5
  IL_0095:  ldstr      "a"
  IL_009a:  stloc.0
  IL_009b:  br.s       IL_00db
  IL_009d:  ldstr      "ab"
  IL_00a2:  stloc.0
  IL_00a3:  br.s       IL_00db
  IL_00a5:  ldstr      "abc"
  IL_00aa:  stloc.0
  IL_00ab:  br.s       IL_00db
  IL_00ad:  ldstr      "abcd"
  IL_00b2:  stloc.0
  IL_00b3:  br.s       IL_00db
  IL_00b5:  ldstr      "abcde"
  IL_00ba:  stloc.0
  IL_00bb:  br.s       IL_00db
  IL_00bd:  ldstr      "abcdef"
  IL_00c2:  stloc.0
  IL_00c3:  br.s       IL_00db
  IL_00c5:  ldstr      "abcdefg"
  IL_00ca:  stloc.0
  IL_00cb:  br.s       IL_00db
  IL_00cd:  ldstr      "abcdefgh"
  IL_00d2:  stloc.0
  IL_00d3:  br.s       IL_00db
  IL_00d5:  ldstr      "default"
  IL_00da:  stloc.0
  IL_00db:  ldloc.0
  IL_00dc:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    internal void BucketSizeOne_MissingAsSpan()
    {
        var source = """
public class C
{
    public static string M(System.Span<char> o)
    {
        return o switch
        {
            "a" => "a",
            "ab" => "ab",
            "abc" => "abc",
            "abcd" => "abcd",
            "abcde" => "abcde",
            "abcdef" => "abcdef",
            "abcdefg" => "abcdefg",
            "abcdefgh" => "abcdefgh",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source, targetFramework: TargetFramework.Net70);
        comp.MakeMemberMissing(WellKnownMember.System_MemoryExtensions__AsSpan_String);
        comp.VerifyEmitDiagnostics(
            // (7,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.AsSpan'
            //             "a" => "a",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""a""").WithArguments("System.MemoryExtensions", "AsSpan").WithLocation(7, 13),
            // (8,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.AsSpan'
            //             "ab" => "ab",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""ab""").WithArguments("System.MemoryExtensions", "AsSpan").WithLocation(8, 13),
            // (9,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.AsSpan'
            //             "abc" => "abc",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abc""").WithArguments("System.MemoryExtensions", "AsSpan").WithLocation(9, 13),
            // (10,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.AsSpan'
            //             "abcd" => "abcd",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcd""").WithArguments("System.MemoryExtensions", "AsSpan").WithLocation(10, 13),
            // (11,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.AsSpan'
            //             "abcde" => "abcde",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcde""").WithArguments("System.MemoryExtensions", "AsSpan").WithLocation(11, 13),
            // (12,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.AsSpan'
            //             "abcdef" => "abcdef",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcdef""").WithArguments("System.MemoryExtensions", "AsSpan").WithLocation(12, 13),
            // (13,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.AsSpan'
            //             "abcdefg" => "abcdefg",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcdefg""").WithArguments("System.MemoryExtensions", "AsSpan").WithLocation(13, 13),
            // (14,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.AsSpan'
            //             "abcdefgh" => "abcdefgh",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcdefgh""").WithArguments("System.MemoryExtensions", "AsSpan").WithLocation(14, 13)
            );
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    internal void BucketSizeOne_MissingSequenceEquals()
    {
        var source = """
public class C
{
    public static string M(System.Span<char> o)
    {
        return o switch
        {
            "a" => "a",
            "ab" => "ab",
            "abc" => "abc",
            "abcd" => "abcd",
            "abcde" => "abcde",
            "abcdef" => "abcdef",
            "abcdefg" => "abcdefg",
            "abcdefgh" => "abcdefgh",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source, targetFramework: TargetFramework.Net70);
        comp.MakeMemberMissing(WellKnownMember.System_MemoryExtensions__SequenceEqual_Span_T);
        comp.VerifyEmitDiagnostics(
            // (7,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.SequenceEqual'
            //             "a" => "a",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""a""").WithArguments("System.MemoryExtensions", "SequenceEqual").WithLocation(7, 13),
            // (8,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.SequenceEqual'
            //             "ab" => "ab",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""ab""").WithArguments("System.MemoryExtensions", "SequenceEqual").WithLocation(8, 13),
            // (9,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.SequenceEqual'
            //             "abc" => "abc",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abc""").WithArguments("System.MemoryExtensions", "SequenceEqual").WithLocation(9, 13),
            // (10,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.SequenceEqual'
            //             "abcd" => "abcd",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcd""").WithArguments("System.MemoryExtensions", "SequenceEqual").WithLocation(10, 13),
            // (11,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.SequenceEqual'
            //             "abcde" => "abcde",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcde""").WithArguments("System.MemoryExtensions", "SequenceEqual").WithLocation(11, 13),
            // (12,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.SequenceEqual'
            //             "abcdef" => "abcdef",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcdef""").WithArguments("System.MemoryExtensions", "SequenceEqual").WithLocation(12, 13),
            // (13,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.SequenceEqual'
            //             "abcdefg" => "abcdefg",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcdefg""").WithArguments("System.MemoryExtensions", "SequenceEqual").WithLocation(13, 13),
            // (14,13): error CS0656: Missing compiler required member 'System.MemoryExtensions.SequenceEqual'
            //             "abcdefgh" => "abcdefgh",
            Diagnostic(ErrorCode.ERR_MissingPredefinedMember, @"""abcdefgh""").WithArguments("System.MemoryExtensions", "SequenceEqual").WithLocation(14, 13)
            );
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void BucketSizeOne_WithNull()
    {
        var source = """
assert(null, "null");
assert("", "default");
assert("a");
assert("ab");
assert("abc");
assert("abcd");
assert("abcde");
assert("abcdef");
assert("not", "default");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(object o)
    {
        return o switch
        {
            "a" => "a",
            "ab" => "ab",
            "abc" => "abc",
            "abcd" => "abcd",
            "abcde" => "abcde",
            "abcdef" => "abcdef",
            "abcdefg" => "abcdefg",
            "abcdefgh" => "abcdefgh",
            null => "null",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyMemberInIL(PrivateImplementationDetails.SynthesizedStringHashFunctionName + "(string)", expected: false);
        verifier.VerifyIL("C.M", """
{
  // Code size      288 (0x120)
  .maxstack  2
  .locals init (string V_0,
                string V_1,
                int V_2,
                char V_3)
  IL_0000:  ldarg.0
  IL_0001:  isinst     "string"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  brfalse    IL_00cb
  IL_000d:  ldloc.1
  IL_000e:  brfalse    IL_0118
  IL_0013:  ldloc.1
  IL_0014:  call       "int string.Length.get"
  IL_0019:  stloc.2
  IL_001a:  ldloc.2
  IL_001b:  ldc.i4.1
  IL_001c:  sub
  IL_001d:  switch    (
        IL_0047,
        IL_0059,
        IL_006b,
        IL_007d,
        IL_008f,
        IL_009e,
        IL_00ad,
        IL_00bc)
  IL_0042:  br         IL_0118
  IL_0047:  ldloc.1
  IL_0048:  ldstr      "a"
  IL_004d:  call       "bool string.op_Equality(string, string)"
  IL_0052:  brtrue.s   IL_00d0
  IL_0054:  br         IL_0118
  IL_0059:  ldloc.1
  IL_005a:  ldstr      "ab"
  IL_005f:  call       "bool string.op_Equality(string, string)"
  IL_0064:  brtrue.s   IL_00d8
  IL_0066:  br         IL_0118
  IL_006b:  ldloc.1
  IL_006c:  ldstr      "abc"
  IL_0071:  call       "bool string.op_Equality(string, string)"
  IL_0076:  brtrue.s   IL_00e0
  IL_0078:  br         IL_0118
  IL_007d:  ldloc.1
  IL_007e:  ldstr      "abcd"
  IL_0083:  call       "bool string.op_Equality(string, string)"
  IL_0088:  brtrue.s   IL_00e8
  IL_008a:  br         IL_0118
  IL_008f:  ldloc.1
  IL_0090:  ldstr      "abcde"
  IL_0095:  call       "bool string.op_Equality(string, string)"
  IL_009a:  brtrue.s   IL_00f0
  IL_009c:  br.s       IL_0118
  IL_009e:  ldloc.1
  IL_009f:  ldstr      "abcdef"
  IL_00a4:  call       "bool string.op_Equality(string, string)"
  IL_00a9:  brtrue.s   IL_00f8
  IL_00ab:  br.s       IL_0118
  IL_00ad:  ldloc.1
  IL_00ae:  ldstr      "abcdefg"
  IL_00b3:  call       "bool string.op_Equality(string, string)"
  IL_00b8:  brtrue.s   IL_0100
  IL_00ba:  br.s       IL_0118
  IL_00bc:  ldloc.1
  IL_00bd:  ldstr      "abcdefgh"
  IL_00c2:  call       "bool string.op_Equality(string, string)"
  IL_00c7:  brtrue.s   IL_0108
  IL_00c9:  br.s       IL_0118
  IL_00cb:  ldarg.0
  IL_00cc:  brfalse.s  IL_0110
  IL_00ce:  br.s       IL_0118
  IL_00d0:  ldstr      "a"
  IL_00d5:  stloc.0
  IL_00d6:  br.s       IL_011e
  IL_00d8:  ldstr      "ab"
  IL_00dd:  stloc.0
  IL_00de:  br.s       IL_011e
  IL_00e0:  ldstr      "abc"
  IL_00e5:  stloc.0
  IL_00e6:  br.s       IL_011e
  IL_00e8:  ldstr      "abcd"
  IL_00ed:  stloc.0
  IL_00ee:  br.s       IL_011e
  IL_00f0:  ldstr      "abcde"
  IL_00f5:  stloc.0
  IL_00f6:  br.s       IL_011e
  IL_00f8:  ldstr      "abcdef"
  IL_00fd:  stloc.0
  IL_00fe:  br.s       IL_011e
  IL_0100:  ldstr      "abcdefg"
  IL_0105:  stloc.0
  IL_0106:  br.s       IL_011e
  IL_0108:  ldstr      "abcdefgh"
  IL_010d:  stloc.0
  IL_010e:  br.s       IL_011e
  IL_0110:  ldstr      "null"
  IL_0115:  stloc.0
  IL_0116:  br.s       IL_011e
  IL_0118:  ldstr      "default"
  IL_011d:  stloc.0
  IL_011e:  ldloc.0
  IL_011f:  ret
}
""");
 
        comp = CreateCompilation(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyMemberInIL("<PrivateImplementationDetails>." + PrivateImplementationDetails.SynthesizedStringHashFunctionName + "(string)", expected: true);
        verifier.VerifyIL("C.M", """
{
  // Code size      357 (0x165)
  .maxstack  2
  .locals init (string V_0,
                string V_1,
                uint V_2)
  IL_0000:  ldarg.0
  IL_0001:  isinst     "string"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  brfalse    IL_0110
  IL_000d:  ldloc.1
  IL_000e:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0013:  stloc.2
  IL_0014:  ldloc.2
  IL_0015:  ldc.i4     0x749bcf08
  IL_001a:  bgt.un.s   IL_0057
  IL_001c:  ldloc.2
  IL_001d:  ldc.i4     0x2a9eb737
  IL_0022:  bgt.un.s   IL_003f
  IL_0024:  ldloc.2
  IL_0025:  ldc.i4     0x1a47e90b
  IL_002a:  beq        IL_00b0
  IL_002f:  ldloc.2
  IL_0030:  ldc.i4     0x2a9eb737
  IL_0035:  beq        IL_00f2
  IL_003a:  br         IL_015d
  IL_003f:  ldloc.2
  IL_0040:  ldc.i4     0x4d2505ca
  IL_0045:  beq.s      IL_009e
  IL_0047:  ldloc.2
  IL_0048:  ldc.i4     0x749bcf08
  IL_004d:  beq        IL_00d4
  IL_0052:  br         IL_015d
  IL_0057:  ldloc.2
  IL_0058:  ldc.i4     0xce3479bd
  IL_005d:  bgt.un.s   IL_0077
  IL_005f:  ldloc.2
  IL_0060:  ldc.i4     0x76daaa8d
  IL_0065:  beq        IL_0101
  IL_006a:  ldloc.2
  IL_006b:  ldc.i4     0xce3479bd
  IL_0070:  beq.s      IL_00c2
  IL_0072:  br         IL_015d
  IL_0077:  ldloc.2
  IL_0078:  ldc.i4     0xe40c292c
  IL_007d:  beq.s      IL_008c
  IL_007f:  ldloc.2
  IL_0080:  ldc.i4     0xff478a2a
  IL_0085:  beq.s      IL_00e3
  IL_0087:  br         IL_015d
  IL_008c:  ldloc.1
  IL_008d:  ldstr      "a"
  IL_0092:  call       "bool string.op_Equality(string, string)"
  IL_0097:  brtrue.s   IL_0115
  IL_0099:  br         IL_015d
  IL_009e:  ldloc.1
  IL_009f:  ldstr      "ab"
  IL_00a4:  call       "bool string.op_Equality(string, string)"
  IL_00a9:  brtrue.s   IL_011d
  IL_00ab:  br         IL_015d
  IL_00b0:  ldloc.1
  IL_00b1:  ldstr      "abc"
  IL_00b6:  call       "bool string.op_Equality(string, string)"
  IL_00bb:  brtrue.s   IL_0125
  IL_00bd:  br         IL_015d
  IL_00c2:  ldloc.1
  IL_00c3:  ldstr      "abcd"
  IL_00c8:  call       "bool string.op_Equality(string, string)"
  IL_00cd:  brtrue.s   IL_012d
  IL_00cf:  br         IL_015d
  IL_00d4:  ldloc.1
  IL_00d5:  ldstr      "abcde"
  IL_00da:  call       "bool string.op_Equality(string, string)"
  IL_00df:  brtrue.s   IL_0135
  IL_00e1:  br.s       IL_015d
  IL_00e3:  ldloc.1
  IL_00e4:  ldstr      "abcdef"
  IL_00e9:  call       "bool string.op_Equality(string, string)"
  IL_00ee:  brtrue.s   IL_013d
  IL_00f0:  br.s       IL_015d
  IL_00f2:  ldloc.1
  IL_00f3:  ldstr      "abcdefg"
  IL_00f8:  call       "bool string.op_Equality(string, string)"
  IL_00fd:  brtrue.s   IL_0145
  IL_00ff:  br.s       IL_015d
  IL_0101:  ldloc.1
  IL_0102:  ldstr      "abcdefgh"
  IL_0107:  call       "bool string.op_Equality(string, string)"
  IL_010c:  brtrue.s   IL_014d
  IL_010e:  br.s       IL_015d
  IL_0110:  ldarg.0
  IL_0111:  brfalse.s  IL_0155
  IL_0113:  br.s       IL_015d
  IL_0115:  ldstr      "a"
  IL_011a:  stloc.0
  IL_011b:  br.s       IL_0163
  IL_011d:  ldstr      "ab"
  IL_0122:  stloc.0
  IL_0123:  br.s       IL_0163
  IL_0125:  ldstr      "abc"
  IL_012a:  stloc.0
  IL_012b:  br.s       IL_0163
  IL_012d:  ldstr      "abcd"
  IL_0132:  stloc.0
  IL_0133:  br.s       IL_0163
  IL_0135:  ldstr      "abcde"
  IL_013a:  stloc.0
  IL_013b:  br.s       IL_0163
  IL_013d:  ldstr      "abcdef"
  IL_0142:  stloc.0
  IL_0143:  br.s       IL_0163
  IL_0145:  ldstr      "abcdefg"
  IL_014a:  stloc.0
  IL_014b:  br.s       IL_0163
  IL_014d:  ldstr      "abcdefgh"
  IL_0152:  stloc.0
  IL_0153:  br.s       IL_0163
  IL_0155:  ldstr      "null"
  IL_015a:  stloc.0
  IL_015b:  br.s       IL_0163
  IL_015d:  ldstr      "default"
  IL_0162:  stloc.0
  IL_0163:  ldloc.0
  IL_0164:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void ContentType()
    {
        var source = """
assert(null, false);
assert("", false);
assert("a", false);
assert("aa", false);
assert("text/xml");
assert("text/css");
assert("text/csv");
assert("image/gif");
assert("image/png");
assert("text/html");
assert("text/plain");
assert("image/jpeg");
assert("application/pdf");
assert("application/xml");
assert("application/zip");
assert("application/grpc");
assert("application/json");
assert("multipart/form-data");
assert("application/javascript");
assert("application/octet-stream");
assert("text/html; charset=utf-8");
assert("text/plain; charset=utf-8");
assert("application/json; charset=utf-8");
assert("application/x-www-form-urlencoded");
System.Console.Write("RAN");
 
void assert(string input, bool expected = true)
{
    if (C.M(input) != expected)
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static bool M(string contentTypeValue)
    {
        switch (contentTypeValue)
        {
            case "text/xml":
            case "text/css":
            case "text/csv":
            case "image/gif":
            case "image/png":
            case "text/html":
            case "text/plain":
            case "image/jpeg":
            case "application/pdf":
            case "application/xml":
            case "application/zip":
            case "application/grpc":
            case "application/json":
            case "multipart/form-data":
            case "application/javascript":
            case "application/octet-stream":
            case "text/html; charset=utf-8":
            case "text/plain; charset=utf-8":
            case "application/json; charset=utf-8":
            case "application/x-www-form-urlencoded":
                return true;
        }
        return false;
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      693 (0x2b5)
  .maxstack  2
  .locals init (int V_0,
                char V_1)
  IL_0000:  ldarg.0
  IL_0001:  brfalse    IL_02b3
  IL_0006:  ldarg.0
  IL_0007:  call       "int string.Length.get"
  IL_000c:  stloc.0
  IL_000d:  ldloc.0
  IL_000e:  ldc.i4.s   25
  IL_0010:  bgt.s      IL_0068
  IL_0012:  ldloc.0
  IL_0013:  ldc.i4.8
  IL_0014:  sub
  IL_0015:  switch    (
        IL_007d,
        IL_00a2,
        IL_00c7,
        IL_02b3,
        IL_02b3,
        IL_02b3,
        IL_02b3,
        IL_00e4,
        IL_010a)
  IL_003e:  ldloc.0
  IL_003f:  ldc.i4.s   19
  IL_0041:  sub
  IL_0042:  switch    (
        IL_024a,
        IL_02b3,
        IL_02b3,
        IL_0259,
        IL_02b3,
        IL_0128,
        IL_0286)
  IL_0063:  br         IL_02b3
  IL_0068:  ldloc.0
  IL_0069:  ldc.i4.s   31
  IL_006b:  beq        IL_0295
  IL_0070:  ldloc.0
  IL_0071:  ldc.i4.s   33
  IL_0073:  beq        IL_02a4
  IL_0078:  br         IL_02b3
  IL_007d:  ldarg.0
  IL_007e:  ldc.i4.7
  IL_007f:  call       "char string.this[int].get"
  IL_0084:  stloc.1
  IL_0085:  ldloc.1
  IL_0086:  ldc.i4.s   108
  IL_0088:  beq        IL_0145
  IL_008d:  ldloc.1
  IL_008e:  ldc.i4.s   115
  IL_0090:  beq        IL_015a
  IL_0095:  ldloc.1
  IL_0096:  ldc.i4.s   118
  IL_0098:  beq        IL_016f
  IL_009d:  br         IL_02b3
  IL_00a2:  ldarg.0
  IL_00a3:  ldc.i4.6
  IL_00a4:  call       "char string.this[int].get"
  IL_00a9:  stloc.1
  IL_00aa:  ldloc.1
  IL_00ab:  ldc.i4.s   103
  IL_00ad:  beq        IL_0184
  IL_00b2:  ldloc.1
  IL_00b3:  ldc.i4.s   112
  IL_00b5:  beq        IL_0199
  IL_00ba:  ldloc.1
  IL_00bb:  ldc.i4.s   116
  IL_00bd:  beq        IL_01ae
  IL_00c2:  br         IL_02b3
  IL_00c7:  ldarg.0
  IL_00c8:  ldc.i4.0
  IL_00c9:  call       "char string.this[int].get"
  IL_00ce:  stloc.1
  IL_00cf:  ldloc.1
  IL_00d0:  ldc.i4.s   105
  IL_00d2:  beq        IL_01d8
  IL_00d7:  ldloc.1
  IL_00d8:  ldc.i4.s   116
  IL_00da:  beq        IL_01c3
  IL_00df:  br         IL_02b3
  IL_00e4:  ldarg.0
  IL_00e5:  ldc.i4.s   12
  IL_00e7:  call       "char string.this[int].get"
  IL_00ec:  stloc.1
  IL_00ed:  ldloc.1
  IL_00ee:  ldc.i4.s   112
  IL_00f0:  beq        IL_01ed
  IL_00f5:  ldloc.1
  IL_00f6:  ldc.i4.s   120
  IL_00f8:  beq        IL_0202
  IL_00fd:  ldloc.1
  IL_00fe:  ldc.i4.s   122
  IL_0100:  beq        IL_0217
  IL_0105:  br         IL_02b3
  IL_010a:  ldarg.0
  IL_010b:  ldc.i4.s   12
  IL_010d:  call       "char string.this[int].get"
  IL_0112:  stloc.1
  IL_0113:  ldloc.1
  IL_0114:  ldc.i4.s   103
  IL_0116:  beq        IL_022c
  IL_011b:  ldloc.1
  IL_011c:  ldc.i4.s   106
  IL_011e:  beq        IL_023b
  IL_0123:  br         IL_02b3
  IL_0128:  ldarg.0
  IL_0129:  ldc.i4.0
  IL_012a:  call       "char string.this[int].get"
  IL_012f:  stloc.1
  IL_0130:  ldloc.1
  IL_0131:  ldc.i4.s   97
  IL_0133:  beq        IL_0268
  IL_0138:  ldloc.1
  IL_0139:  ldc.i4.s   116
  IL_013b:  beq        IL_0277
  IL_0140:  br         IL_02b3
  IL_0145:  ldarg.0
  IL_0146:  ldstr      "text/xml"
  IL_014b:  call       "bool string.op_Equality(string, string)"
  IL_0150:  brtrue     IL_02b1
  IL_0155:  br         IL_02b3
  IL_015a:  ldarg.0
  IL_015b:  ldstr      "text/css"
  IL_0160:  call       "bool string.op_Equality(string, string)"
  IL_0165:  brtrue     IL_02b1
  IL_016a:  br         IL_02b3
  IL_016f:  ldarg.0
  IL_0170:  ldstr      "text/csv"
  IL_0175:  call       "bool string.op_Equality(string, string)"
  IL_017a:  brtrue     IL_02b1
  IL_017f:  br         IL_02b3
  IL_0184:  ldarg.0
  IL_0185:  ldstr      "image/gif"
  IL_018a:  call       "bool string.op_Equality(string, string)"
  IL_018f:  brtrue     IL_02b1
  IL_0194:  br         IL_02b3
  IL_0199:  ldarg.0
  IL_019a:  ldstr      "image/png"
  IL_019f:  call       "bool string.op_Equality(string, string)"
  IL_01a4:  brtrue     IL_02b1
  IL_01a9:  br         IL_02b3
  IL_01ae:  ldarg.0
  IL_01af:  ldstr      "text/html"
  IL_01b4:  call       "bool string.op_Equality(string, string)"
  IL_01b9:  brtrue     IL_02b1
  IL_01be:  br         IL_02b3
  IL_01c3:  ldarg.0
  IL_01c4:  ldstr      "text/plain"
  IL_01c9:  call       "bool string.op_Equality(string, string)"
  IL_01ce:  brtrue     IL_02b1
  IL_01d3:  br         IL_02b3
  IL_01d8:  ldarg.0
  IL_01d9:  ldstr      "image/jpeg"
  IL_01de:  call       "bool string.op_Equality(string, string)"
  IL_01e3:  brtrue     IL_02b1
  IL_01e8:  br         IL_02b3
  IL_01ed:  ldarg.0
  IL_01ee:  ldstr      "application/pdf"
  IL_01f3:  call       "bool string.op_Equality(string, string)"
  IL_01f8:  brtrue     IL_02b1
  IL_01fd:  br         IL_02b3
  IL_0202:  ldarg.0
  IL_0203:  ldstr      "application/xml"
  IL_0208:  call       "bool string.op_Equality(string, string)"
  IL_020d:  brtrue     IL_02b1
  IL_0212:  br         IL_02b3
  IL_0217:  ldarg.0
  IL_0218:  ldstr      "application/zip"
  IL_021d:  call       "bool string.op_Equality(string, string)"
  IL_0222:  brtrue     IL_02b1
  IL_0227:  br         IL_02b3
  IL_022c:  ldarg.0
  IL_022d:  ldstr      "application/grpc"
  IL_0232:  call       "bool string.op_Equality(string, string)"
  IL_0237:  brtrue.s   IL_02b1
  IL_0239:  br.s       IL_02b3
  IL_023b:  ldarg.0
  IL_023c:  ldstr      "application/json"
  IL_0241:  call       "bool string.op_Equality(string, string)"
  IL_0246:  brtrue.s   IL_02b1
  IL_0248:  br.s       IL_02b3
  IL_024a:  ldarg.0
  IL_024b:  ldstr      "multipart/form-data"
  IL_0250:  call       "bool string.op_Equality(string, string)"
  IL_0255:  brtrue.s   IL_02b1
  IL_0257:  br.s       IL_02b3
  IL_0259:  ldarg.0
  IL_025a:  ldstr      "application/javascript"
  IL_025f:  call       "bool string.op_Equality(string, string)"
  IL_0264:  brtrue.s   IL_02b1
  IL_0266:  br.s       IL_02b3
  IL_0268:  ldarg.0
  IL_0269:  ldstr      "application/octet-stream"
  IL_026e:  call       "bool string.op_Equality(string, string)"
  IL_0273:  brtrue.s   IL_02b1
  IL_0275:  br.s       IL_02b3
  IL_0277:  ldarg.0
  IL_0278:  ldstr      "text/html; charset=utf-8"
  IL_027d:  call       "bool string.op_Equality(string, string)"
  IL_0282:  brtrue.s   IL_02b1
  IL_0284:  br.s       IL_02b3
  IL_0286:  ldarg.0
  IL_0287:  ldstr      "text/plain; charset=utf-8"
  IL_028c:  call       "bool string.op_Equality(string, string)"
  IL_0291:  brtrue.s   IL_02b1
  IL_0293:  br.s       IL_02b3
  IL_0295:  ldarg.0
  IL_0296:  ldstr      "application/json; charset=utf-8"
  IL_029b:  call       "bool string.op_Equality(string, string)"
  IL_02a0:  brtrue.s   IL_02b1
  IL_02a2:  br.s       IL_02b3
  IL_02a4:  ldarg.0
  IL_02a5:  ldstr      "application/x-www-form-urlencoded"
  IL_02aa:  call       "bool string.op_Equality(string, string)"
  IL_02af:  brfalse.s  IL_02b3
  IL_02b1:  ldc.i4.1
  IL_02b2:  ret
  IL_02b3:  ldc.i4.0
  IL_02b4:  ret
}
""");
 
        comp = CreateCompilation(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      694 (0x2b6)
  .maxstack  2
  .locals init (uint V_0)
  IL_0000:  ldarg.0
  IL_0001:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0006:  stloc.0
  IL_0007:  ldloc.0
  IL_0008:  ldc.i4     0xad238cee
  IL_000d:  bgt.un     IL_00ac
  IL_0012:  ldloc.0
  IL_0013:  ldc.i4     0x498c93a5
  IL_0018:  bgt.un.s   IL_0063
  IL_001a:  ldloc.0
  IL_001b:  ldc.i4     0x12648e18
  IL_0020:  bgt.un.s   IL_003d
  IL_0022:  ldloc.0
  IL_0023:  ldc.i4     0xa54742b
  IL_0028:  beq        IL_0287
  IL_002d:  ldloc.0
  IL_002e:  ldc.i4     0x12648e18
  IL_0033:  beq        IL_0146
  IL_0038:  br         IL_02b4
  IL_003d:  ldloc.0
  IL_003e:  ldc.i4     0x335c6202
  IL_0043:  beq        IL_0278
  IL_0048:  ldloc.0
  IL_0049:  ldc.i4     0x3e4bb053
  IL_004e:  beq        IL_0203
  IL_0053:  ldloc.0
  IL_0054:  ldc.i4     0x498c93a5
  IL_0059:  beq        IL_025a
  IL_005e:  br         IL_02b4
  IL_0063:  ldloc.0
  IL_0064:  ldc.i4     0x75d8656e
  IL_0069:  bgt.un.s   IL_0086
  IL_006b:  ldloc.0
  IL_006c:  ldc.i4     0x69e8e6a8
  IL_0071:  beq        IL_023c
  IL_0076:  ldloc.0
  IL_0077:  ldc.i4     0x75d8656e
  IL_007c:  beq        IL_01af
  IL_0081:  br         IL_02b4
  IL_0086:  ldloc.0
  IL_0087:  ldc.i4     0x84ebb23d
  IL_008c:  beq        IL_0218
  IL_0091:  ldloc.0
  IL_0092:  ldc.i4     0xacccdd84
  IL_0097:  beq        IL_01ee
  IL_009c:  ldloc.0
  IL_009d:  ldc.i4     0xad238cee
  IL_00a2:  beq        IL_015b
  IL_00a7:  br         IL_02b4
  IL_00ac:  ldloc.0
  IL_00ad:  ldc.i4     0xd23bd685
  IL_00b2:  bgt.un.s   IL_00fd
  IL_00b4:  ldloc.0
  IL_00b5:  ldc.i4     0xb22394cd
  IL_00ba:  bgt.un.s   IL_00d7
  IL_00bc:  ldloc.0
  IL_00bd:  ldc.i4     0xb00abf3a
  IL_00c2:  beq        IL_019a
  IL_00c7:  ldloc.0
  IL_00c8:  ldc.i4     0xb22394cd
  IL_00cd:  beq        IL_0170
  IL_00d2:  br         IL_02b4
  IL_00d7:  ldloc.0
  IL_00d8:  ldc.i4     0xb71b3e3f
  IL_00dd:  beq        IL_0185
  IL_00e2:  ldloc.0
  IL_00e3:  ldc.i4     0xc0fe6950
  IL_00e8:  beq        IL_0269
  IL_00ed:  ldloc.0
  IL_00ee:  ldc.i4     0xd23bd685
  IL_00f3:  beq        IL_01c4
  IL_00f8:  br         IL_02b4
  IL_00fd:  ldloc.0
  IL_00fe:  ldc.i4     0xdced728d
  IL_0103:  bgt.un.s   IL_0120
  IL_0105:  ldloc.0
  IL_0106:  ldc.i4     0xd4121ccc
  IL_010b:  beq        IL_0296
  IL_0110:  ldloc.0
  IL_0111:  ldc.i4     0xdced728d
  IL_0116:  beq        IL_024b
  IL_011b:  br         IL_02b4
  IL_0120:  ldloc.0
  IL_0121:  ldc.i4     0xe88a7c5d
  IL_0126:  beq        IL_01d9
  IL_012b:  ldloc.0
  IL_012c:  ldc.i4     0xef625ac9
  IL_0131:  beq        IL_02a5
  IL_0136:  ldloc.0
  IL_0137:  ldc.i4     0xfb352546
  IL_013c:  beq        IL_022d
  IL_0141:  br         IL_02b4
  IL_0146:  ldarg.0
  IL_0147:  ldstr      "text/xml"
  IL_014c:  call       "bool string.op_Equality(string, string)"
  IL_0151:  brtrue     IL_02b2
  IL_0156:  br         IL_02b4
  IL_015b:  ldarg.0
  IL_015c:  ldstr      "text/css"
  IL_0161:  call       "bool string.op_Equality(string, string)"
  IL_0166:  brtrue     IL_02b2
  IL_016b:  br         IL_02b4
  IL_0170:  ldarg.0
  IL_0171:  ldstr      "text/csv"
  IL_0176:  call       "bool string.op_Equality(string, string)"
  IL_017b:  brtrue     IL_02b2
  IL_0180:  br         IL_02b4
  IL_0185:  ldarg.0
  IL_0186:  ldstr      "image/gif"
  IL_018b:  call       "bool string.op_Equality(string, string)"
  IL_0190:  brtrue     IL_02b2
  IL_0195:  br         IL_02b4
  IL_019a:  ldarg.0
  IL_019b:  ldstr      "image/png"
  IL_01a0:  call       "bool string.op_Equality(string, string)"
  IL_01a5:  brtrue     IL_02b2
  IL_01aa:  br         IL_02b4
  IL_01af:  ldarg.0
  IL_01b0:  ldstr      "text/html"
  IL_01b5:  call       "bool string.op_Equality(string, string)"
  IL_01ba:  brtrue     IL_02b2
  IL_01bf:  br         IL_02b4
  IL_01c4:  ldarg.0
  IL_01c5:  ldstr      "text/plain"
  IL_01ca:  call       "bool string.op_Equality(string, string)"
  IL_01cf:  brtrue     IL_02b2
  IL_01d4:  br         IL_02b4
  IL_01d9:  ldarg.0
  IL_01da:  ldstr      "image/jpeg"
  IL_01df:  call       "bool string.op_Equality(string, string)"
  IL_01e4:  brtrue     IL_02b2
  IL_01e9:  br         IL_02b4
  IL_01ee:  ldarg.0
  IL_01ef:  ldstr      "application/pdf"
  IL_01f4:  call       "bool string.op_Equality(string, string)"
  IL_01f9:  brtrue     IL_02b2
  IL_01fe:  br         IL_02b4
  IL_0203:  ldarg.0
  IL_0204:  ldstr      "application/xml"
  IL_0209:  call       "bool string.op_Equality(string, string)"
  IL_020e:  brtrue     IL_02b2
  IL_0213:  br         IL_02b4
  IL_0218:  ldarg.0
  IL_0219:  ldstr      "application/zip"
  IL_021e:  call       "bool string.op_Equality(string, string)"
  IL_0223:  brtrue     IL_02b2
  IL_0228:  br         IL_02b4
  IL_022d:  ldarg.0
  IL_022e:  ldstr      "application/grpc"
  IL_0233:  call       "bool string.op_Equality(string, string)"
  IL_0238:  brtrue.s   IL_02b2
  IL_023a:  br.s       IL_02b4
  IL_023c:  ldarg.0
  IL_023d:  ldstr      "application/json"
  IL_0242:  call       "bool string.op_Equality(string, string)"
  IL_0247:  brtrue.s   IL_02b2
  IL_0249:  br.s       IL_02b4
  IL_024b:  ldarg.0
  IL_024c:  ldstr      "multipart/form-data"
  IL_0251:  call       "bool string.op_Equality(string, string)"
  IL_0256:  brtrue.s   IL_02b2
  IL_0258:  br.s       IL_02b4
  IL_025a:  ldarg.0
  IL_025b:  ldstr      "application/javascript"
  IL_0260:  call       "bool string.op_Equality(string, string)"
  IL_0265:  brtrue.s   IL_02b2
  IL_0267:  br.s       IL_02b4
  IL_0269:  ldarg.0
  IL_026a:  ldstr      "application/octet-stream"
  IL_026f:  call       "bool string.op_Equality(string, string)"
  IL_0274:  brtrue.s   IL_02b2
  IL_0276:  br.s       IL_02b4
  IL_0278:  ldarg.0
  IL_0279:  ldstr      "text/html; charset=utf-8"
  IL_027e:  call       "bool string.op_Equality(string, string)"
  IL_0283:  brtrue.s   IL_02b2
  IL_0285:  br.s       IL_02b4
  IL_0287:  ldarg.0
  IL_0288:  ldstr      "text/plain; charset=utf-8"
  IL_028d:  call       "bool string.op_Equality(string, string)"
  IL_0292:  brtrue.s   IL_02b2
  IL_0294:  br.s       IL_02b4
  IL_0296:  ldarg.0
  IL_0297:  ldstr      "application/json; charset=utf-8"
  IL_029c:  call       "bool string.op_Equality(string, string)"
  IL_02a1:  brtrue.s   IL_02b2
  IL_02a3:  br.s       IL_02b4
  IL_02a5:  ldarg.0
  IL_02a6:  ldstr      "application/x-www-form-urlencoded"
  IL_02ab:  call       "bool string.op_Equality(string, string)"
  IL_02b0:  brfalse.s  IL_02b4
  IL_02b2:  ldc.i4.1
  IL_02b3:  ret
  IL_02b4:  ldc.i4.0
  IL_02b5:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void BucketSizeTen()
    {
        var source = """
for (int i = 0; i < 50; i++)
{
    assert(i.ToString("D2"));
}
 
for (int i = 0; i < 10; i++)
{
    assert("A" + i.ToString("D1"), "default");
    assert(i.ToString("D1") + "A", "default");
}
 
assert(null, "default");
assert("", "default");
assert("50", "default");
 
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    expected ??= input;
    if (C.M(input) != expected)
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string x)
    {
        return x switch
        {
            "00" => "00",
            "01" => "01",
            "02" => "02",
            "03" => "03",
            "04" => "04",
            "05" => "05",
            "06" => "06",
            "07" => "07",
            "08" => "08",
            "09" => "09",
            "10" => "10",
            "11" => "11",
            "12" => "12",
            "13" => "13",
            "14" => "14",
            "15" => "15",
            "16" => "16",
            "17" => "17",
            "18" => "18",
            "19" => "19",
            "20" => "20",
            "21" => "21",
            "22" => "22",
            "23" => "23",
            "24" => "24",
            "25" => "25",
            "26" => "26",
            "27" => "27",
            "28" => "28",
            "29" => "29",
            "30" => "30",
            "31" => "31",
            "32" => "32",
            "33" => "33",
            "34" => "34",
            "35" => "35",
            "36" => "36",
            "37" => "37",
            "38" => "38",
            "39" => "39",
            "40" => "40",
            "41" => "41",
            "42" => "42",
            "43" => "43",
            "44" => "44",
            "45" => "45",
            "46" => "46",
            "47" => "47",
            "48" => "48",
            "49" => "49",
            "59" => "59",
            "69" => "69",
            "79" => "79",
            "89" => "89",
            "99" => "99",
            _ => "default"
        };
    }
}
""";
 
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size     2632 (0xa48)
  .maxstack  2
  .locals init (string V_0,
                uint V_1)
  IL_0000:  ldarg.0
  IL_0001:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  ldc.i4     0x87f05176
  IL_000d:  bgt.un     IL_01c5
  IL_0012:  ldloc.1
  IL_0013:  ldc.i4     0x1bed68db
  IL_0018:  bgt.un     IL_00e5
  IL_001d:  ldloc.1
  IL_001e:  ldc.i4     0x18eb258b
  IL_0023:  bgt.un.s   IL_0079
  IL_0025:  ldloc.1
  IL_0026:  ldc.i4     0x14eb1f3f
  IL_002b:  bgt.un.s   IL_0053
  IL_002d:  ldloc.1
  IL_002e:  ldc.i4     0xce8d410
  IL_0033:  beq        IL_07bf
  IL_0038:  ldloc.1
  IL_0039:  ldc.i4     0x13eb1dac
  IL_003e:  beq        IL_050a
  IL_0043:  ldloc.1
  IL_0044:  ldc.i4     0x14eb1f3f
  IL_0049:  beq        IL_051f
  IL_004e:  br         IL_0a40
  IL_0053:  ldloc.1
  IL_0054:  ldc.i4     0x14fea6f7
  IL_0059:  beq        IL_07fe
  IL_005e:  ldloc.1
  IL_005f:  ldc.i4     0x17eb23f8
  IL_0064:  beq        IL_04b6
  IL_0069:  ldloc.1
  IL_006a:  ldc.i4     0x18eb258b
  IL_006f:  beq        IL_04cb
  IL_0074:  br         IL_0a40
  IL_0079:  ldloc.1
  IL_007a:  ldc.i4     0x19ed65b5
  IL_007f:  bgt.un.s   IL_00a7
  IL_0081:  ldloc.1
  IL_0082:  ldc.i4     0x18ed6422
  IL_0087:  beq        IL_044d
  IL_008c:  ldloc.1
  IL_008d:  ldc.i4     0x19eb271e
  IL_0092:  beq        IL_04e0
  IL_0097:  ldloc.1
  IL_0098:  ldc.i4     0x19ed65b5
  IL_009d:  beq        IL_0438
  IL_00a2:  br         IL_0a40
  IL_00a7:  ldloc.1
  IL_00a8:  ldc.i4     0x1aed6748
  IL_00ad:  bgt.un.s   IL_00ca
  IL_00af:  ldloc.1
  IL_00b0:  ldc.i4     0x1aeb28b1
  IL_00b5:  beq        IL_04f5
  IL_00ba:  ldloc.1
  IL_00bb:  ldc.i4     0x1aed6748
  IL_00c0:  beq        IL_0423
  IL_00c5:  br         IL_0a40
  IL_00ca:  ldloc.1
  IL_00cb:  ldc.i4     0x1beb2a44
  IL_00d0:  beq        IL_0462
  IL_00d5:  ldloc.1
  IL_00d6:  ldc.i4     0x1bed68db
  IL_00db:  beq        IL_040e
  IL_00e0:  br         IL_0a40
  IL_00e5:  ldloc.1
  IL_00e6:  ldc.i4     0x1fed6f27
  IL_00eb:  bgt.un.s   IL_0159
  IL_00ed:  ldloc.1
  IL_00ee:  ldc.i4     0x1deb2d6a
  IL_00f3:  bgt.un.s   IL_011b
  IL_00f5:  ldloc.1
  IL_00f6:  ldc.i4     0x1ceb2bd7
  IL_00fb:  beq        IL_0477
  IL_0100:  ldloc.1
  IL_0101:  ldc.i4     0x1ced6a6e
  IL_0106:  beq        IL_03f9
  IL_010b:  ldloc.1
  IL_010c:  ldc.i4     0x1deb2d6a
  IL_0111:  beq        IL_048c
  IL_0116:  br         IL_0a40
  IL_011b:  ldloc.1
  IL_011c:  ldc.i4     0x1eeb2efd
  IL_0121:  bgt.un.s   IL_013e
  IL_0123:  ldloc.1
  IL_0124:  ldc.i4     0x1ded6c01
  IL_0129:  beq        IL_03e4
  IL_012e:  ldloc.1
  IL_012f:  ldc.i4     0x1eeb2efd
  IL_0134:  beq        IL_04a1
  IL_0139:  br         IL_0a40
  IL_013e:  ldloc.1
  IL_013f:  ldc.i4     0x1eed6d94
  IL_0144:  beq        IL_03cf
  IL_0149:  ldloc.1
  IL_014a:  ldc.i4     0x1fed6f27
  IL_014f:  beq        IL_03ba
  IL_0154:  br         IL_0a40
  IL_0159:  ldloc.1
  IL_015a:  ldc.i4     0x85f04e50
  IL_015f:  bgt.un.s   IL_0187
  IL_0161:  ldloc.1
  IL_0162:  ldc.i4     0x20ed70ba
  IL_0167:  beq        IL_03a5
  IL_016c:  ldloc.1
  IL_016d:  ldc.i4     0x21ed724d
  IL_0172:  beq        IL_0390
  IL_0177:  ldloc.1
  IL_0178:  ldc.i4     0x85f04e50
  IL_017d:  beq        IL_0630
  IL_0182:  br         IL_0a40
  IL_0187:  ldloc.1
  IL_0188:  ldc.i4     0x86f04fe3
  IL_018d:  bgt.un.s   IL_01aa
  IL_018f:  ldloc.1
  IL_0190:  ldc.i4     0x86e383f0
  IL_0195:  beq        IL_0717
  IL_019a:  ldloc.1
  IL_019b:  ldc.i4     0x86f04fe3
  IL_01a0:  beq        IL_0645
  IL_01a5:  br         IL_0a40
  IL_01aa:  ldloc.1
  IL_01ab:  ldc.i4     0x87e38583
  IL_01b0:  beq        IL_0702
  IL_01b5:  ldloc.1
  IL_01b6:  ldc.i4     0x87f05176
  IL_01bb:  beq        IL_0606
  IL_01c0:  br         IL_0a40
  IL_01c5:  ldloc.1
  IL_01c6:  ldc.i4     0x8ce38d62
  IL_01cb:  bgt.un     IL_02b0
  IL_01d0:  ldloc.1
  IL_01d1:  ldc.i4     0x8ae38a3c
  IL_01d6:  bgt.un.s   IL_0244
  IL_01d8:  ldloc.1
  IL_01d9:  ldc.i4     0x88f291a0
  IL_01de:  bgt.un.s   IL_0206
  IL_01e0:  ldloc.1
  IL_01e1:  ldc.i4     0x88e38716
  IL_01e6:  beq        IL_06ed
  IL_01eb:  ldloc.1
  IL_01ec:  ldc.i4     0x88f05309
  IL_01f1:  beq        IL_061b
  IL_01f6:  ldloc.1
  IL_01f7:  ldc.i4     0x88f291a0
  IL_01fc:  beq        IL_059d
  IL_0201:  br         IL_0a40
  IL_0206:  ldloc.1
  IL_0207:  ldc.i4     0x89f0549c
  IL_020c:  bgt.un.s   IL_0229
  IL_020e:  ldloc.1
  IL_020f:  ldc.i4     0x89e388a9
  IL_0214:  beq        IL_06d8
  IL_0219:  ldloc.1
  IL_021a:  ldc.i4     0x89f0549c
  IL_021f:  beq        IL_0684
  IL_0224:  br         IL_0a40
  IL_0229:  ldloc.1
  IL_022a:  ldc.i4     0x89f29333
  IL_022f:  beq        IL_0588
  IL_0234:  ldloc.1
  IL_0235:  ldc.i4     0x8ae38a3c
  IL_023a:  beq        IL_076b
  IL_023f:  br         IL_0a40
  IL_0244:  ldloc.1
  IL_0245:  ldc.i4     0x8be38bcf
  IL_024a:  bgt.un.s   IL_0272
  IL_024c:  ldloc.1
  IL_024d:  ldc.i4     0x8af0562f
  IL_0252:  beq        IL_0699
  IL_0257:  ldloc.1
  IL_0258:  ldc.i4     0x8af294c6
  IL_025d:  beq        IL_05c7
  IL_0262:  ldloc.1
  IL_0263:  ldc.i4     0x8be38bcf
  IL_0268:  beq        IL_0756
  IL_026d:  br         IL_0a40
  IL_0272:  ldloc.1
  IL_0273:  ldc.i4     0x8bf29659
  IL_0278:  bgt.un.s   IL_0295
  IL_027a:  ldloc.1
  IL_027b:  ldc.i4     0x8bf057c2
  IL_0280:  beq        IL_065a
  IL_0285:  ldloc.1
  IL_0286:  ldc.i4     0x8bf29659
  IL_028b:  beq        IL_05b2
  IL_0290:  br         IL_0a40
  IL_0295:  ldloc.1
  IL_0296:  ldc.i4     0x8ce14ecb
  IL_029b:  beq        IL_07aa
  IL_02a0:  ldloc.1
  IL_02a1:  ldc.i4     0x8ce38d62
  IL_02a6:  beq        IL_0741
  IL_02ab:  br         IL_0a40
  IL_02b0:  ldloc.1
  IL_02b1:  ldc.i4     0x8ff29ca5
  IL_02b6:  bgt.un.s   IL_0324
  IL_02b8:  ldloc.1
  IL_02b9:  ldc.i4     0x8de38ef5
  IL_02be:  bgt.un.s   IL_02e6
  IL_02c0:  ldloc.1
  IL_02c1:  ldc.i4     0x8cf05955
  IL_02c6:  beq        IL_066f
  IL_02cb:  ldloc.1
  IL_02cc:  ldc.i4     0x8cf297ec
  IL_02d1:  beq        IL_0549
  IL_02d6:  ldloc.1
  IL_02d7:  ldc.i4     0x8de38ef5
  IL_02dc:  beq        IL_072c
  IL_02e1:  br         IL_0a40
  IL_02e6:  ldloc.1
  IL_02e7:  ldc.i4     0x8ef29b12
  IL_02ec:  bgt.un.s   IL_0309
  IL_02ee:  ldloc.1
  IL_02ef:  ldc.i4     0x8df2997f
  IL_02f4:  beq        IL_0534
  IL_02f9:  ldloc.1
  IL_02fa:  ldc.i4     0x8ef29b12
  IL_02ff:  beq        IL_0573
  IL_0304:  br         IL_0a40
  IL_0309:  ldloc.1
  IL_030a:  ldc.i4     0x8ff05e0e
  IL_030f:  beq        IL_06ae
  IL_0314:  ldloc.1
  IL_0315:  ldc.i4     0x8ff29ca5
  IL_031a:  beq        IL_055e
  IL_031f:  br         IL_0a40
  IL_0324:  ldloc.1
  IL_0325:  ldc.i4     0x91e39541
  IL_032a:  bgt.un.s   IL_0352
  IL_032c:  ldloc.1
  IL_032d:  ldc.i4     0x90e393ae
  IL_0332:  beq        IL_0795
  IL_0337:  ldloc.1
  IL_0338:  ldc.i4     0x90f05fa1
  IL_033d:  beq        IL_06c3
  IL_0342:  ldloc.1
  IL_0343:  ldc.i4     0x91e39541
  IL_0348:  beq        IL_0780
  IL_034d:  br         IL_0a40
  IL_0352:  ldloc.1
  IL_0353:  ldc.i4     0x95f2a617
  IL_0358:  bgt.un.s   IL_0375
  IL_035a:  ldloc.1
  IL_035b:  ldc.i4     0x94f2a484
  IL_0360:  beq        IL_05f1
  IL_0365:  ldloc.1
  IL_0366:  ldc.i4     0x95f2a617
  IL_036b:  beq        IL_05dc
  IL_0370:  br         IL_0a40
  IL_0375:  ldloc.1
  IL_0376:  ldc.i4     0x98e5dedd
  IL_037b:  beq        IL_07d4
  IL_0380:  ldloc.1
  IL_0381:  ldc.i4     0x9901b55a
  IL_0386:  beq        IL_07e9
  IL_038b:  br         IL_0a40
  IL_0390:  ldarg.0
  IL_0391:  ldstr      "00"
  IL_0396:  call       "bool string.op_Equality(string, string)"
  IL_039b:  brtrue     IL_0813
  IL_03a0:  br         IL_0a40
  IL_03a5:  ldarg.0
  IL_03a6:  ldstr      "01"
  IL_03ab:  call       "bool string.op_Equality(string, string)"
  IL_03b0:  brtrue     IL_081e
  IL_03b5:  br         IL_0a40
  IL_03ba:  ldarg.0
  IL_03bb:  ldstr      "02"
  IL_03c0:  call       "bool string.op_Equality(string, string)"
  IL_03c5:  brtrue     IL_0829
  IL_03ca:  br         IL_0a40
  IL_03cf:  ldarg.0
  IL_03d0:  ldstr      "03"
  IL_03d5:  call       "bool string.op_Equality(string, string)"
  IL_03da:  brtrue     IL_0834
  IL_03df:  br         IL_0a40
  IL_03e4:  ldarg.0
  IL_03e5:  ldstr      "04"
  IL_03ea:  call       "bool string.op_Equality(string, string)"
  IL_03ef:  brtrue     IL_083f
  IL_03f4:  br         IL_0a40
  IL_03f9:  ldarg.0
  IL_03fa:  ldstr      "05"
  IL_03ff:  call       "bool string.op_Equality(string, string)"
  IL_0404:  brtrue     IL_084a
  IL_0409:  br         IL_0a40
  IL_040e:  ldarg.0
  IL_040f:  ldstr      "06"
  IL_0414:  call       "bool string.op_Equality(string, string)"
  IL_0419:  brtrue     IL_0855
  IL_041e:  br         IL_0a40
  IL_0423:  ldarg.0
  IL_0424:  ldstr      "07"
  IL_0429:  call       "bool string.op_Equality(string, string)"
  IL_042e:  brtrue     IL_0860
  IL_0433:  br         IL_0a40
  IL_0438:  ldarg.0
  IL_0439:  ldstr      "08"
  IL_043e:  call       "bool string.op_Equality(string, string)"
  IL_0443:  brtrue     IL_086b
  IL_0448:  br         IL_0a40
  IL_044d:  ldarg.0
  IL_044e:  ldstr      "09"
  IL_0453:  call       "bool string.op_Equality(string, string)"
  IL_0458:  brtrue     IL_0876
  IL_045d:  br         IL_0a40
  IL_0462:  ldarg.0
  IL_0463:  ldstr      "10"
  IL_0468:  call       "bool string.op_Equality(string, string)"
  IL_046d:  brtrue     IL_0881
  IL_0472:  br         IL_0a40
  IL_0477:  ldarg.0
  IL_0478:  ldstr      "11"
  IL_047d:  call       "bool string.op_Equality(string, string)"
  IL_0482:  brtrue     IL_088c
  IL_0487:  br         IL_0a40
  IL_048c:  ldarg.0
  IL_048d:  ldstr      "12"
  IL_0492:  call       "bool string.op_Equality(string, string)"
  IL_0497:  brtrue     IL_0897
  IL_049c:  br         IL_0a40
  IL_04a1:  ldarg.0
  IL_04a2:  ldstr      "13"
  IL_04a7:  call       "bool string.op_Equality(string, string)"
  IL_04ac:  brtrue     IL_08a2
  IL_04b1:  br         IL_0a40
  IL_04b6:  ldarg.0
  IL_04b7:  ldstr      "14"
  IL_04bc:  call       "bool string.op_Equality(string, string)"
  IL_04c1:  brtrue     IL_08ad
  IL_04c6:  br         IL_0a40
  IL_04cb:  ldarg.0
  IL_04cc:  ldstr      "15"
  IL_04d1:  call       "bool string.op_Equality(string, string)"
  IL_04d6:  brtrue     IL_08b8
  IL_04db:  br         IL_0a40
  IL_04e0:  ldarg.0
  IL_04e1:  ldstr      "16"
  IL_04e6:  call       "bool string.op_Equality(string, string)"
  IL_04eb:  brtrue     IL_08c3
  IL_04f0:  br         IL_0a40
  IL_04f5:  ldarg.0
  IL_04f6:  ldstr      "17"
  IL_04fb:  call       "bool string.op_Equality(string, string)"
  IL_0500:  brtrue     IL_08ce
  IL_0505:  br         IL_0a40
  IL_050a:  ldarg.0
  IL_050b:  ldstr      "18"
  IL_0510:  call       "bool string.op_Equality(string, string)"
  IL_0515:  brtrue     IL_08d9
  IL_051a:  br         IL_0a40
  IL_051f:  ldarg.0
  IL_0520:  ldstr      "19"
  IL_0525:  call       "bool string.op_Equality(string, string)"
  IL_052a:  brtrue     IL_08e4
  IL_052f:  br         IL_0a40
  IL_0534:  ldarg.0
  IL_0535:  ldstr      "20"
  IL_053a:  call       "bool string.op_Equality(string, string)"
  IL_053f:  brtrue     IL_08ef
  IL_0544:  br         IL_0a40
  IL_0549:  ldarg.0
  IL_054a:  ldstr      "21"
  IL_054f:  call       "bool string.op_Equality(string, string)"
  IL_0554:  brtrue     IL_08fa
  IL_0559:  br         IL_0a40
  IL_055e:  ldarg.0
  IL_055f:  ldstr      "22"
  IL_0564:  call       "bool string.op_Equality(string, string)"
  IL_0569:  brtrue     IL_0905
  IL_056e:  br         IL_0a40
  IL_0573:  ldarg.0
  IL_0574:  ldstr      "23"
  IL_0579:  call       "bool string.op_Equality(string, string)"
  IL_057e:  brtrue     IL_0910
  IL_0583:  br         IL_0a40
  IL_0588:  ldarg.0
  IL_0589:  ldstr      "24"
  IL_058e:  call       "bool string.op_Equality(string, string)"
  IL_0593:  brtrue     IL_091b
  IL_0598:  br         IL_0a40
  IL_059d:  ldarg.0
  IL_059e:  ldstr      "25"
  IL_05a3:  call       "bool string.op_Equality(string, string)"
  IL_05a8:  brtrue     IL_0926
  IL_05ad:  br         IL_0a40
  IL_05b2:  ldarg.0
  IL_05b3:  ldstr      "26"
  IL_05b8:  call       "bool string.op_Equality(string, string)"
  IL_05bd:  brtrue     IL_0931
  IL_05c2:  br         IL_0a40
  IL_05c7:  ldarg.0
  IL_05c8:  ldstr      "27"
  IL_05cd:  call       "bool string.op_Equality(string, string)"
  IL_05d2:  brtrue     IL_093c
  IL_05d7:  br         IL_0a40
  IL_05dc:  ldarg.0
  IL_05dd:  ldstr      "28"
  IL_05e2:  call       "bool string.op_Equality(string, string)"
  IL_05e7:  brtrue     IL_0947
  IL_05ec:  br         IL_0a40
  IL_05f1:  ldarg.0
  IL_05f2:  ldstr      "29"
  IL_05f7:  call       "bool string.op_Equality(string, string)"
  IL_05fc:  brtrue     IL_0952
  IL_0601:  br         IL_0a40
  IL_0606:  ldarg.0
  IL_0607:  ldstr      "30"
  IL_060c:  call       "bool string.op_Equality(string, string)"
  IL_0611:  brtrue     IL_095d
  IL_0616:  br         IL_0a40
  IL_061b:  ldarg.0
  IL_061c:  ldstr      "31"
  IL_0621:  call       "bool string.op_Equality(string, string)"
  IL_0626:  brtrue     IL_0968
  IL_062b:  br         IL_0a40
  IL_0630:  ldarg.0
  IL_0631:  ldstr      "32"
  IL_0636:  call       "bool string.op_Equality(string, string)"
  IL_063b:  brtrue     IL_0973
  IL_0640:  br         IL_0a40
  IL_0645:  ldarg.0
  IL_0646:  ldstr      "33"
  IL_064b:  call       "bool string.op_Equality(string, string)"
  IL_0650:  brtrue     IL_097e
  IL_0655:  br         IL_0a40
  IL_065a:  ldarg.0
  IL_065b:  ldstr      "34"
  IL_0660:  call       "bool string.op_Equality(string, string)"
  IL_0665:  brtrue     IL_0989
  IL_066a:  br         IL_0a40
  IL_066f:  ldarg.0
  IL_0670:  ldstr      "35"
  IL_0675:  call       "bool string.op_Equality(string, string)"
  IL_067a:  brtrue     IL_0994
  IL_067f:  br         IL_0a40
  IL_0684:  ldarg.0
  IL_0685:  ldstr      "36"
  IL_068a:  call       "bool string.op_Equality(string, string)"
  IL_068f:  brtrue     IL_099f
  IL_0694:  br         IL_0a40
  IL_0699:  ldarg.0
  IL_069a:  ldstr      "37"
  IL_069f:  call       "bool string.op_Equality(string, string)"
  IL_06a4:  brtrue     IL_09aa
  IL_06a9:  br         IL_0a40
  IL_06ae:  ldarg.0
  IL_06af:  ldstr      "38"
  IL_06b4:  call       "bool string.op_Equality(string, string)"
  IL_06b9:  brtrue     IL_09b5
  IL_06be:  br         IL_0a40
  IL_06c3:  ldarg.0
  IL_06c4:  ldstr      "39"
  IL_06c9:  call       "bool string.op_Equality(string, string)"
  IL_06ce:  brtrue     IL_09c0
  IL_06d3:  br         IL_0a40
  IL_06d8:  ldarg.0
  IL_06d9:  ldstr      "40"
  IL_06de:  call       "bool string.op_Equality(string, string)"
  IL_06e3:  brtrue     IL_09c8
  IL_06e8:  br         IL_0a40
  IL_06ed:  ldarg.0
  IL_06ee:  ldstr      "41"
  IL_06f3:  call       "bool string.op_Equality(string, string)"
  IL_06f8:  brtrue     IL_09d0
  IL_06fd:  br         IL_0a40
  IL_0702:  ldarg.0
  IL_0703:  ldstr      "42"
  IL_0708:  call       "bool string.op_Equality(string, string)"
  IL_070d:  brtrue     IL_09d8
  IL_0712:  br         IL_0a40
  IL_0717:  ldarg.0
  IL_0718:  ldstr      "43"
  IL_071d:  call       "bool string.op_Equality(string, string)"
  IL_0722:  brtrue     IL_09e0
  IL_0727:  br         IL_0a40
  IL_072c:  ldarg.0
  IL_072d:  ldstr      "44"
  IL_0732:  call       "bool string.op_Equality(string, string)"
  IL_0737:  brtrue     IL_09e8
  IL_073c:  br         IL_0a40
  IL_0741:  ldarg.0
  IL_0742:  ldstr      "45"
  IL_0747:  call       "bool string.op_Equality(string, string)"
  IL_074c:  brtrue     IL_09f0
  IL_0751:  br         IL_0a40
  IL_0756:  ldarg.0
  IL_0757:  ldstr      "46"
  IL_075c:  call       "bool string.op_Equality(string, string)"
  IL_0761:  brtrue     IL_09f8
  IL_0766:  br         IL_0a40
  IL_076b:  ldarg.0
  IL_076c:  ldstr      "47"
  IL_0771:  call       "bool string.op_Equality(string, string)"
  IL_0776:  brtrue     IL_0a00
  IL_077b:  br         IL_0a40
  IL_0780:  ldarg.0
  IL_0781:  ldstr      "48"
  IL_0786:  call       "bool string.op_Equality(string, string)"
  IL_078b:  brtrue     IL_0a08
  IL_0790:  br         IL_0a40
  IL_0795:  ldarg.0
  IL_0796:  ldstr      "49"
  IL_079b:  call       "bool string.op_Equality(string, string)"
  IL_07a0:  brtrue     IL_0a10
  IL_07a5:  br         IL_0a40
  IL_07aa:  ldarg.0
  IL_07ab:  ldstr      "59"
  IL_07b0:  call       "bool string.op_Equality(string, string)"
  IL_07b5:  brtrue     IL_0a18
  IL_07ba:  br         IL_0a40
  IL_07bf:  ldarg.0
  IL_07c0:  ldstr      "69"
  IL_07c5:  call       "bool string.op_Equality(string, string)"
  IL_07ca:  brtrue     IL_0a20
  IL_07cf:  br         IL_0a40
  IL_07d4:  ldarg.0
  IL_07d5:  ldstr      "79"
  IL_07da:  call       "bool string.op_Equality(string, string)"
  IL_07df:  brtrue     IL_0a28
  IL_07e4:  br         IL_0a40
  IL_07e9:  ldarg.0
  IL_07ea:  ldstr      "89"
  IL_07ef:  call       "bool string.op_Equality(string, string)"
  IL_07f4:  brtrue     IL_0a30
  IL_07f9:  br         IL_0a40
  IL_07fe:  ldarg.0
  IL_07ff:  ldstr      "99"
  IL_0804:  call       "bool string.op_Equality(string, string)"
  IL_0809:  brtrue     IL_0a38
  IL_080e:  br         IL_0a40
  IL_0813:  ldstr      "00"
  IL_0818:  stloc.0
  IL_0819:  br         IL_0a46
  IL_081e:  ldstr      "01"
  IL_0823:  stloc.0
  IL_0824:  br         IL_0a46
  IL_0829:  ldstr      "02"
  IL_082e:  stloc.0
  IL_082f:  br         IL_0a46
  IL_0834:  ldstr      "03"
  IL_0839:  stloc.0
  IL_083a:  br         IL_0a46
  IL_083f:  ldstr      "04"
  IL_0844:  stloc.0
  IL_0845:  br         IL_0a46
  IL_084a:  ldstr      "05"
  IL_084f:  stloc.0
  IL_0850:  br         IL_0a46
  IL_0855:  ldstr      "06"
  IL_085a:  stloc.0
  IL_085b:  br         IL_0a46
  IL_0860:  ldstr      "07"
  IL_0865:  stloc.0
  IL_0866:  br         IL_0a46
  IL_086b:  ldstr      "08"
  IL_0870:  stloc.0
  IL_0871:  br         IL_0a46
  IL_0876:  ldstr      "09"
  IL_087b:  stloc.0
  IL_087c:  br         IL_0a46
  IL_0881:  ldstr      "10"
  IL_0886:  stloc.0
  IL_0887:  br         IL_0a46
  IL_088c:  ldstr      "11"
  IL_0891:  stloc.0
  IL_0892:  br         IL_0a46
  IL_0897:  ldstr      "12"
  IL_089c:  stloc.0
  IL_089d:  br         IL_0a46
  IL_08a2:  ldstr      "13"
  IL_08a7:  stloc.0
  IL_08a8:  br         IL_0a46
  IL_08ad:  ldstr      "14"
  IL_08b2:  stloc.0
  IL_08b3:  br         IL_0a46
  IL_08b8:  ldstr      "15"
  IL_08bd:  stloc.0
  IL_08be:  br         IL_0a46
  IL_08c3:  ldstr      "16"
  IL_08c8:  stloc.0
  IL_08c9:  br         IL_0a46
  IL_08ce:  ldstr      "17"
  IL_08d3:  stloc.0
  IL_08d4:  br         IL_0a46
  IL_08d9:  ldstr      "18"
  IL_08de:  stloc.0
  IL_08df:  br         IL_0a46
  IL_08e4:  ldstr      "19"
  IL_08e9:  stloc.0
  IL_08ea:  br         IL_0a46
  IL_08ef:  ldstr      "20"
  IL_08f4:  stloc.0
  IL_08f5:  br         IL_0a46
  IL_08fa:  ldstr      "21"
  IL_08ff:  stloc.0
  IL_0900:  br         IL_0a46
  IL_0905:  ldstr      "22"
  IL_090a:  stloc.0
  IL_090b:  br         IL_0a46
  IL_0910:  ldstr      "23"
  IL_0915:  stloc.0
  IL_0916:  br         IL_0a46
  IL_091b:  ldstr      "24"
  IL_0920:  stloc.0
  IL_0921:  br         IL_0a46
  IL_0926:  ldstr      "25"
  IL_092b:  stloc.0
  IL_092c:  br         IL_0a46
  IL_0931:  ldstr      "26"
  IL_0936:  stloc.0
  IL_0937:  br         IL_0a46
  IL_093c:  ldstr      "27"
  IL_0941:  stloc.0
  IL_0942:  br         IL_0a46
  IL_0947:  ldstr      "28"
  IL_094c:  stloc.0
  IL_094d:  br         IL_0a46
  IL_0952:  ldstr      "29"
  IL_0957:  stloc.0
  IL_0958:  br         IL_0a46
  IL_095d:  ldstr      "30"
  IL_0962:  stloc.0
  IL_0963:  br         IL_0a46
  IL_0968:  ldstr      "31"
  IL_096d:  stloc.0
  IL_096e:  br         IL_0a46
  IL_0973:  ldstr      "32"
  IL_0978:  stloc.0
  IL_0979:  br         IL_0a46
  IL_097e:  ldstr      "33"
  IL_0983:  stloc.0
  IL_0984:  br         IL_0a46
  IL_0989:  ldstr      "34"
  IL_098e:  stloc.0
  IL_098f:  br         IL_0a46
  IL_0994:  ldstr      "35"
  IL_0999:  stloc.0
  IL_099a:  br         IL_0a46
  IL_099f:  ldstr      "36"
  IL_09a4:  stloc.0
  IL_09a5:  br         IL_0a46
  IL_09aa:  ldstr      "37"
  IL_09af:  stloc.0
  IL_09b0:  br         IL_0a46
  IL_09b5:  ldstr      "38"
  IL_09ba:  stloc.0
  IL_09bb:  br         IL_0a46
  IL_09c0:  ldstr      "39"
  IL_09c5:  stloc.0
  IL_09c6:  br.s       IL_0a46
  IL_09c8:  ldstr      "40"
  IL_09cd:  stloc.0
  IL_09ce:  br.s       IL_0a46
  IL_09d0:  ldstr      "41"
  IL_09d5:  stloc.0
  IL_09d6:  br.s       IL_0a46
  IL_09d8:  ldstr      "42"
  IL_09dd:  stloc.0
  IL_09de:  br.s       IL_0a46
  IL_09e0:  ldstr      "43"
  IL_09e5:  stloc.0
  IL_09e6:  br.s       IL_0a46
  IL_09e8:  ldstr      "44"
  IL_09ed:  stloc.0
  IL_09ee:  br.s       IL_0a46
  IL_09f0:  ldstr      "45"
  IL_09f5:  stloc.0
  IL_09f6:  br.s       IL_0a46
  IL_09f8:  ldstr      "46"
  IL_09fd:  stloc.0
  IL_09fe:  br.s       IL_0a46
  IL_0a00:  ldstr      "47"
  IL_0a05:  stloc.0
  IL_0a06:  br.s       IL_0a46
  IL_0a08:  ldstr      "48"
  IL_0a0d:  stloc.0
  IL_0a0e:  br.s       IL_0a46
  IL_0a10:  ldstr      "49"
  IL_0a15:  stloc.0
  IL_0a16:  br.s       IL_0a46
  IL_0a18:  ldstr      "59"
  IL_0a1d:  stloc.0
  IL_0a1e:  br.s       IL_0a46
  IL_0a20:  ldstr      "69"
  IL_0a25:  stloc.0
  IL_0a26:  br.s       IL_0a46
  IL_0a28:  ldstr      "79"
  IL_0a2d:  stloc.0
  IL_0a2e:  br.s       IL_0a46
  IL_0a30:  ldstr      "89"
  IL_0a35:  stloc.0
  IL_0a36:  br.s       IL_0a46
  IL_0a38:  ldstr      "99"
  IL_0a3d:  stloc.0
  IL_0a3e:  br.s       IL_0a46
  IL_0a40:  ldstr      "default"
  IL_0a45:  stloc.0
  IL_0a46:  ldloc.0
  IL_0a47:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void GetDriveType()
    {
        // Based on https://github.com/dotnet/runtime/blob/main/src/libraries/Common/src/Interop/Unix/System.Native/Interop.MountPoints.FormatInfo.cs#L78-L327A
        // Buckets: 5, 3, 1, 3, 2, 2, 1, 1, 2, 1, 2, 1, 1, 3, 1, 1, 1, 1, 1, 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 1, 2, 3, 2, 4, 1, 2, 3, 1, 2, 4, 3, 2, 1, 2, 1, 1, 1, 1, 1, 2, 3, 3, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 3, 10, 3, 2, 5, 1, 1, 3, 1, 1, 2, 2, 3, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 3, 2, 3, 2, 1, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
        var source = """
assert("cddafs", "cddafs");
assert("cd9660", "cddafs");
assert("iso", "cddafs");
assert("isofs", "cddafs");
assert("iso9660", "cddafs");
assert("fuseiso", "cddafs");
assert("fuseiso9660", "cddafs");
assert("udf", "cddafs");
assert("umview-mod-umfuseiso9660", "cddafs");
 
assert("aafs", "aafs");
assert("adfs", "aafs");
assert("affs", "aafs");
assert("anoninode", "aafs");
assert("anon-inode FS", "aafs");
assert("apfs", "aafs");
assert("balloon-kvm-fs", "aafs");
assert("bdevfs", "aafs");
assert("befs", "aafs");
assert("bfs", "aafs");
assert("bootfs", "aafs");
assert("bpf_fs", "aafs");
assert("btrfs", "aafs");
assert("btrfs_test", "aafs");
assert("coh", "aafs");
assert("daxfs", "aafs");
assert("drvfs", "aafs");
assert("efivarfs", "aafs");
assert("efs", "aafs");
assert("exfat", "aafs");
assert("exofs", "aafs");
assert("ext", "aafs");
assert("ext2", "aafs");
assert("ext2_old", "aafs");
assert("ext3", "aafs");
assert("ext2/ext3", "aafs");
assert("ext4", "aafs");
assert("ext4dev", "aafs");
assert("f2fs", "aafs");
assert("fat", "aafs");
assert("fuseext2", "aafs");
assert("fusefat", "aafs");
assert("hfs", "aafs");
assert("hfs+", "aafs");
assert("hfsplus", "aafs");
assert("hfsx", "aafs");
assert("hostfs", "aafs");
assert("hpfs", "aafs");
assert("inodefs", "aafs");
assert("inotifyfs", "aafs");
assert("jbd", "aafs");
assert("jbd2", "aafs");
assert("jffs", "aafs");
assert("jffs2", "aafs");
assert("jfs", "aafs");
assert("lofs", "aafs");
assert("logfs", "aafs");
assert("lxfs", "aafs");
assert("minix (30 char.)", "aafs");
assert("minix v2 (30 char.)", "aafs");
assert("minix v2", "aafs");
assert("minix", "aafs");
assert("minix_old", "aafs");
assert("minix2", "aafs");
assert("minix2v2", "aafs");
assert("minix2 v2", "aafs");
assert("minix3", "aafs");
assert("mlfs", "aafs");
assert("msdos", "aafs");
assert("nilfs", "aafs");
assert("nsfs", "aafs");
assert("ntfs", "aafs");
assert("ntfs-3g", "aafs");
assert("ocfs2", "aafs");
assert("omfs", "aafs");
assert("overlay", "aafs");
assert("overlayfs", "aafs");
assert("pstorefs", "aafs");
assert("qnx4", "aafs");
assert("qnx6", "aafs");
assert("reiserfs", "aafs");
assert("rpc_pipefs", "aafs");
assert("sffs", "aafs");
assert("smackfs", "aafs");
assert("squashfs", "aafs");
assert("swap", "aafs");
assert("sysv", "aafs");
assert("sysv2", "aafs");
assert("sysv4", "aafs");
assert("tracefs", "aafs");
assert("ubifs", "aafs");
assert("ufs", "aafs");
assert("ufscigam", "aafs");
assert("ufs2", "aafs");
assert("umsdos", "aafs");
assert("umview-mod-umfuseext2", "aafs");
assert("v9fs", "aafs");
assert("vagrant", "aafs");
assert("vboxfs", "aafs");
assert("vxfs", "aafs");
assert("vxfs_olt", "aafs");
assert("vzfs", "aafs");
assert("wslfs", "aafs");
assert("xenix", "aafs");
assert("xfs", "aafs");
assert("xia", "aafs");
assert("xiafs", "aafs");
assert("xmount", "aafs");
assert("zfs", "aafs");
assert("zfs-fuse", "aafs");
assert("zsmallocfs", "aafs");
 
assert("9p", "9p");
assert("acfs", "9p");
assert("afp", "9p");
assert("afpfs", "9p");
assert("afs", "9p");
assert("aufs", "9p");
assert("autofs", "9p");
assert("autofs4", "9p");
assert("beaglefs", "9p");
assert("ceph", "9p");
assert("cifs", "9p");
assert("coda", "9p");
assert("coherent", "9p");
assert("curlftpfs", "9p");
assert("davfs2", "9p");
assert("dlm", "9p");
assert("ecryptfs", "9p");
assert("eCryptfs", "9p");
assert("fhgfs", "9p");
assert("flickrfs", "9p");
assert("ftp", "9p");
assert("fuse", "9p");
assert("fuseblk", "9p");
assert("fusedav", "9p");
assert("fusesmb", "9p");
assert("gfsgfs2", "9p");
assert("gfs/gfs2", "9p");
assert("gfs2", "9p");
assert("glusterfs-client", "9p");
assert("gmailfs", "9p");
assert("gpfs", "9p");
assert("ibrix", "9p");
assert("k-afs", "9p");
assert("kafs", "9p");
assert("kbfuse", "9p");
assert("ltspfs", "9p");
assert("lustre", "9p");
assert("ncp", "9p");
assert("ncpfs", "9p");
assert("nfs", "9p");
assert("nfs4", "9p");
assert("nfsd", "9p");
assert("novell", "9p");
assert("obexfs", "9p");
assert("panfs", "9p");
assert("prl_fs", "9p");
assert("s3ql", "9p");
assert("samba", "9p");
assert("smb", "9p");
assert("smb2", "9p");
assert("smbfs", "9p");
assert("snfs", "9p");
assert("sshfs", "9p");
assert("vmhgfs", "9p");
assert("webdav", "9p");
assert("wikipediafs", "9p");
assert("xenfs", "9p");
 
assert("anon_inode", "anon_inode");
assert("anon_inodefs", "anon_inode");
assert("aptfs", "anon_inode");
assert("avfs", "anon_inode");
assert("bdev", "anon_inode");
assert("binfmt_misc", "anon_inode");
assert("cgroup", "anon_inode");
assert("cgroupfs", "anon_inode");
assert("cgroup2fs", "anon_inode");
assert("configfs", "anon_inode");
assert("cpuset", "anon_inode");
assert("cramfs", "anon_inode");
assert("cramfs-wend", "anon_inode");
assert("cryptkeeper", "anon_inode");
assert("ctfs", "anon_inode");
assert("debugfs", "anon_inode");
assert("dev", "anon_inode");
assert("devfs", "anon_inode");
assert("devpts", "anon_inode");
assert("devtmpfs", "anon_inode");
assert("encfs", "anon_inode");
assert("fd", "anon_inode");
assert("fdesc", "anon_inode");
assert("fuse.gvfsd-fuse", "anon_inode");
assert("fusectl", "anon_inode");
assert("futexfs", "anon_inode");
assert("hugetlbfs", "anon_inode");
assert("libpam-encfs", "anon_inode");
assert("ibpam-mount", "anon_inode");
assert("mntfs", "anon_inode");
assert("mqueue", "anon_inode");
assert("mtpfs", "anon_inode");
assert("mythtvfs", "anon_inode");
assert("objfs", "anon_inode");
assert("openprom", "anon_inode");
assert("openpromfs", "anon_inode");
assert("pipefs", "anon_inode");
assert("plptools", "anon_inode");
assert("proc", "anon_inode");
assert("pstore", "anon_inode");
assert("pytagsfs", "anon_inode");
assert("ramfs", "anon_inode");
assert("rofs", "anon_inode");
assert("romfs", "anon_inode");
assert("rootfs", "anon_inode");
assert("securityfs", "anon_inode");
assert("selinux", "anon_inode");
assert("selinuxfs", "anon_inode");
assert("sharefs", "anon_inode");
assert("sockfs", "anon_inode");
assert("sysfs", "anon_inode");
assert("tmpfs", "anon_inode");
assert("udev", "anon_inode");
assert("usbdev", "anon_inode");
assert("usbdevfs", "anon_inode");
 
assert("gphotofs", "gphotofs");
assert("sdcardfs", "gphotofs");
assert("usbfs", "gphotofs");
assert("usbdevice", "gphotofs");
assert("vfat", "gphotofs");
 
assert(null, "default");
assert("", "default");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    expected ??= input;
    if (C.M(input) != expected)
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string fileSystemName)
    {
        switch (fileSystemName)
        {
            case "cddafs":
            case "cd9660":
            case "iso":
            case "isofs":
            case "iso9660":
            case "fuseiso":
            case "fuseiso9660":
            case "udf":
            case "umview-mod-umfuseiso9660":
                return  "cddafs";
 
            case "aafs":
            case "adfs":
            case "affs":
            case "anoninode":
            case "anon-inode FS":
            case "apfs":
            case "balloon-kvm-fs":
            case "bdevfs":
            case "befs":
            case "bfs":
            case "bootfs":
            case "bpf_fs":
            case "btrfs":
            case "btrfs_test":
            case "coh":
            case "daxfs":
            case "drvfs":
            case "efivarfs":
            case "efs":
            case "exfat":
            case "exofs":
            case "ext":
            case "ext2":
            case "ext2_old":
            case "ext3":
            case "ext2/ext3":
            case "ext4":
            case "ext4dev":
            case "f2fs":
            case "fat":
            case "fuseext2":
            case "fusefat":
            case "hfs":
            case "hfs+":
            case "hfsplus":
            case "hfsx":
            case "hostfs":
            case "hpfs":
            case "inodefs":
            case "inotifyfs":
            case "jbd":
            case "jbd2":
            case "jffs":
            case "jffs2":
            case "jfs":
            case "lofs":
            case "logfs":
            case "lxfs":
            case "minix (30 char.)":
            case "minix v2 (30 char.)":
            case "minix v2":
            case "minix":
            case "minix_old":
            case "minix2":
            case "minix2v2":
            case "minix2 v2":
            case "minix3":
            case "mlfs":
            case "msdos":
            case "nilfs":
            case "nsfs":
            case "ntfs":
            case "ntfs-3g":
            case "ocfs2":
            case "omfs":
            case "overlay":
            case "overlayfs":
            case "pstorefs":
            case "qnx4":
            case "qnx6":
            case "reiserfs":
            case "rpc_pipefs":
            case "sffs":
            case "smackfs":
            case "squashfs":
            case "swap":
            case "sysv":
            case "sysv2":
            case "sysv4":
            case "tracefs":
            case "ubifs":
            case "ufs":
            case "ufscigam":
            case "ufs2":
            case "umsdos":
            case "umview-mod-umfuseext2":
            case "v9fs":
            case "vagrant":
            case "vboxfs":
            case "vxfs":
            case "vxfs_olt":
            case "vzfs":
            case "wslfs":
            case "xenix":
            case "xfs":
            case "xia":
            case "xiafs":
            case "xmount":
            case "zfs":
            case "zfs-fuse":
            case "zsmallocfs":
                return "aafs";
 
            case "9p":
            case "acfs":
            case "afp":
            case "afpfs":
            case "afs":
            case "aufs":
            case "autofs":
            case "autofs4":
            case "beaglefs":
            case "ceph":
            case "cifs":
            case "coda":
            case "coherent":
            case "curlftpfs":
            case "davfs2":
            case "dlm":
            case "ecryptfs":
            case "eCryptfs":
            case "fhgfs":
            case "flickrfs":
            case "ftp":
            case "fuse":
            case "fuseblk":
            case "fusedav":
            case "fusesmb":
            case "gfsgfs2":
            case "gfs/gfs2":
            case "gfs2":
            case "glusterfs-client":
            case "gmailfs":
            case "gpfs":
            case "ibrix":
            case "k-afs":
            case "kafs":
            case "kbfuse":
            case "ltspfs":
            case "lustre":
            case "ncp":
            case "ncpfs":
            case "nfs":
            case "nfs4":
            case "nfsd":
            case "novell":
            case "obexfs":
            case "panfs":
            case "prl_fs":
            case "s3ql":
            case "samba":
            case "smb":
            case "smb2":
            case "smbfs":
            case "snfs":
            case "sshfs":
            case "vmhgfs":
            case "webdav":
            case "wikipediafs":
            case "xenfs":
                return "9p";
 
            case "anon_inode":
            case "anon_inodefs":
            case "aptfs":
            case "avfs":
            case "bdev":
            case "binfmt_misc":
            case "cgroup":
            case "cgroupfs":
            case "cgroup2fs":
            case "configfs":
            case "cpuset":
            case "cramfs":
            case "cramfs-wend":
            case "cryptkeeper":
            case "ctfs":
            case "debugfs":
            case "dev":
            case "devfs":
            case "devpts":
            case "devtmpfs":
            case "encfs":
            case "fd":
            case "fdesc":
            case "fuse.gvfsd-fuse":
            case "fusectl":
            case "futexfs":
            case "hugetlbfs":
            case "libpam-encfs":
            case "ibpam-mount":
            case "mntfs":
            case "mqueue":
            case "mtpfs":
            case "mythtvfs":
            case "objfs":
            case "openprom":
            case "openpromfs":
            case "pipefs":
            case "plptools":
            case "proc":
            case "pstore":
            case "pytagsfs":
            case "ramfs":
            case "rofs":
            case "romfs":
            case "rootfs":
            case "securityfs":
            case "selinux":
            case "selinuxfs":
            case "sharefs":
            case "sockfs":
            case "sysfs":
            case "tmpfs":
            case "udev":
            case "usbdev":
            case "usbdevfs":
                return "anon_inode";
 
            case "gphotofs":
            case "sdcardfs":
            case "usbfs":
            case "usbdevice":
            case "vfat":
                return "gphotofs";
 
            default:
                return "default";
        }
    }
}
""";
 
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size     8586 (0x218a)
  .maxstack  2
  .locals init (uint V_0)
  IL_0000:  ldarg.0
  IL_0001:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0006:  stloc.0
  IL_0007:  ldloc.0
  IL_0008:  ldc.i4     0x93254270
  IL_000d:  bgt.un     IL_0777
  IL_0012:  ldloc.0
  IL_0013:  ldc.i4     0x38c6cc37
  IL_0018:  bgt.un     IL_03be
  IL_001d:  ldloc.0
  IL_001e:  ldc.i4     0x2065d503
  IL_0023:  bgt.un     IL_01f3
  IL_0028:  ldloc.0
  IL_0029:  ldc.i4     0xe306532
  IL_002e:  bgt.un     IL_0113
  IL_0033:  ldloc.0
  IL_0034:  ldc.i4     0x9cd23fb
  IL_0039:  bgt.un.s   IL_00a7
  IL_003b:  ldloc.0
  IL_003c:  ldc.i4     0x4a3c0d1
  IL_0041:  bgt.un.s   IL_0069
  IL_0043:  ldloc.0
  IL_0044:  ldc.i4     0x1dcdad6
  IL_0049:  beq        IL_12e1
  IL_004e:  ldloc.0
  IL_004f:  ldc.i4     0x3a1df42
  IL_0054:  beq        IL_18c9
  IL_0059:  ldloc.0
  IL_005a:  ldc.i4     0x4a3c0d1
  IL_005f:  beq        IL_20d3
  IL_0064:  br         IL_2184
  IL_0069:  ldloc.0
  IL_006a:  ldc.i4     0x73ff364
  IL_006f:  bgt.un.s   IL_008c
  IL_0071:  ldloc.0
  IL_0072:  ldc.i4     0x4f8da09
  IL_0077:  beq        IL_1470
  IL_007c:  ldloc.0
  IL_007d:  ldc.i4     0x73ff364
  IL_0082:  beq        IL_1518
  IL_0087:  br         IL_2184
  IL_008c:  ldloc.0
  IL_008d:  ldc.i4     0x8305bc0
  IL_0092:  beq        IL_11d0
  IL_0097:  ldloc.0
  IL_0098:  ldc.i4     0x9cd23fb
  IL_009d:  beq        IL_11bb
  IL_00a2:  br         IL_2184
  IL_00a7:  ldloc.0
  IL_00a8:  ldc.i4     0xb177b39
  IL_00ad:  bgt.un.s   IL_00d5
  IL_00af:  ldloc.0
  IL_00b0:  ldc.i4     0xa57b005
  IL_00b5:  beq        IL_15ab
  IL_00ba:  ldloc.0
  IL_00bb:  ldc.i4     0xaa0d1c1
  IL_00c0:  beq        IL_1263
  IL_00c5:  ldloc.0
  IL_00c6:  ldc.i4     0xb177b39
  IL_00cb:  beq        IL_1e1e
  IL_00d0:  br         IL_2184
  IL_00d5:  ldloc.0
  IL_00d6:  ldc.i4     0xd347e19
  IL_00db:  bgt.un.s   IL_00f8
  IL_00dd:  ldloc.0
  IL_00de:  ldc.i4     0xb1a5699
  IL_00e3:  beq        IL_1875
  IL_00e8:  ldloc.0
  IL_00e9:  ldc.i4     0xd347e19
  IL_00ee:  beq        IL_20be
  IL_00f3:  br         IL_2184
  IL_00f8:  ldloc.0
  IL_00f9:  ldc.i4     0xdb92b7a
  IL_00fe:  beq        IL_202b
  IL_0103:  ldloc.0
  IL_0104:  ldc.i4     0xe306532
  IL_0109:  beq        IL_117c
  IL_010e:  br         IL_2184
  IL_0113:  ldloc.0
  IL_0114:  ldc.i4     0x14361444
  IL_0119:  bgt.un.s   IL_0187
  IL_011b:  ldloc.0
  IL_011c:  ldc.i4     0x11854a78
  IL_0121:  bgt.un.s   IL_0149
  IL_0123:  ldloc.0
  IL_0124:  ldc.i4     0xf3066c5
  IL_0129:  beq        IL_11a6
  IL_012e:  ldloc.0
  IL_012f:  ldc.i4     0x1036061b
  IL_0134:  beq        IL_212a
  IL_0139:  ldloc.0
  IL_013a:  ldc.i4     0x11854a78
  IL_013f:  beq        IL_1aeb
  IL_0144:  br         IL_2184
  IL_0149:  ldloc.0
  IL_014a:  ldc.i4     0x1283563d
  IL_014f:  bgt.un.s   IL_016c
  IL_0151:  ldloc.0
  IL_0152:  ldc.i4     0x11e3e89a
  IL_0157:  beq        IL_19ef
  IL_015c:  ldloc.0
  IL_015d:  ldc.i4     0x1283563d
  IL_0162:  beq        IL_1ac1
  IL_0167:  br         IL_2184
  IL_016c:  ldloc.0
  IL_016d:  ldc.i4     0x1312c917
  IL_0172:  beq        IL_1239
  IL_0177:  ldloc.0
  IL_0178:  ldc.i4     0x14361444
  IL_017d:  beq        IL_17cd
  IL_0182:  br         IL_2184
  IL_0187:  ldloc.0
  IL_0188:  ldc.i4     0x1c2d7204
  IL_018d:  bgt.un.s   IL_01b5
  IL_018f:  ldloc.0
  IL_0190:  ldc.i4     0x194bd3e1
  IL_0195:  beq        IL_1986
  IL_019a:  ldloc.0
  IL_019b:  ldc.i4     0x1b223d32
  IL_01a0:  beq        IL_1c50
  IL_01a5:  ldloc.0
  IL_01a6:  ldc.i4     0x1c2d7204
  IL_01ab:  beq        IL_16fb
  IL_01b0:  br         IL_2184
  IL_01b5:  ldloc.0
  IL_01b6:  ldc.i4     0x1d950792
  IL_01bb:  bgt.un.s   IL_01d8
  IL_01bd:  ldloc.0
  IL_01be:  ldc.i4     0x1ca03ef2
  IL_01c3:  beq        IL_1b2a
  IL_01c8:  ldloc.0
  IL_01c9:  ldc.i4     0x1d950792
  IL_01ce:  beq        IL_1b00
  IL_01d3:  br         IL_2184
  IL_01d8:  ldloc.0
  IL_01d9:  ldc.i4     0x2032cda8
  IL_01de:  beq        IL_20fd
  IL_01e3:  ldloc.0
  IL_01e4:  ldc.i4     0x2065d503
  IL_01e9:  beq        IL_1503
  IL_01ee:  br         IL_2184
  IL_01f3:  ldloc.0
  IL_01f4:  ldc.i4     0x2a1ea797
  IL_01f9:  bgt.un     IL_02de
  IL_01fe:  ldloc.0
  IL_01ff:  ldc.i4     0x2520eead
  IL_0204:  bgt.un.s   IL_0272
  IL_0206:  ldloc.0
  IL_0207:  ldc.i4     0x2161f7c8
  IL_020c:  bgt.un.s   IL_0234
  IL_020e:  ldloc.0
  IL_020f:  ldc.i4     0x20f48093
  IL_0214:  beq        IL_1b69
  IL_0219:  ldloc.0
  IL_021a:  ldc.i4     0x2117f6c8
  IL_021f:  beq        IL_1002
  IL_0224:  ldloc.0
  IL_0225:  ldc.i4     0x2161f7c8
  IL_022a:  beq        IL_156c
  IL_022f:  br         IL_2184
  IL_0234:  ldloc.0
  IL_0235:  ldc.i4     0x2465d7a1
  IL_023a:  bgt.un.s   IL_0257
  IL_023c:  ldloc.0
  IL_023d:  ldc.i4     0x22edfc61
  IL_0242:  beq        IL_0fd8
  IL_0247:  ldloc.0
  IL_0248:  ldc.i4     0x2465d7a1
  IL_024d:  beq        IL_1bd2
  IL_0252:  br         IL_2184
  IL_0257:  ldloc.0
  IL_0258:  ldc.i4     0x24b9c5bb
  IL_025d:  beq        IL_130b
  IL_0262:  ldloc.0
  IL_0263:  ldc.i4     0x2520eead
  IL_0268:  beq        IL_1f05
  IL_026d:  br         IL_2184
  IL_0272:  ldloc.0
  IL_0273:  ldc.i4     0x277c5a36
  IL_0278:  bgt.un.s   IL_02a0
  IL_027a:  ldloc.0
  IL_027b:  ldc.i4     0x2548e1fd
  IL_0280:  beq        IL_1dca
  IL_0285:  ldloc.0
  IL_0286:  ldc.i4     0x27767257
  IL_028b:  beq        IL_188a
  IL_0290:  ldloc.0
  IL_0291:  ldc.i4     0x277c5a36
  IL_0296:  beq        IL_14d9
  IL_029b:  br         IL_2184
  IL_02a0:  ldloc.0
  IL_02a1:  ldc.i4     0x2a0e6591
  IL_02a6:  bgt.un.s   IL_02c3
  IL_02a8:  ldloc.0
  IL_02a9:  ldc.i4     0x286b88ce
  IL_02ae:  beq        IL_1080
  IL_02b3:  ldloc.0
  IL_02b4:  ldc.i4     0x2a0e6591
  IL_02b9:  beq        IL_2016
  IL_02be:  br         IL_2184
  IL_02c3:  ldloc.0
  IL_02c4:  ldc.i4     0x2a1b6620
  IL_02c9:  beq        IL_2157
  IL_02ce:  ldloc.0
  IL_02cf:  ldc.i4     0x2a1ea797
  IL_02d4:  beq        IL_1971
  IL_02d9:  br         IL_2184
  IL_02de:  ldloc.0
  IL_02df:  ldc.i4     0x315a74f8
  IL_02e4:  bgt.un.s   IL_0352
  IL_02e6:  ldloc.0
  IL_02e7:  ldc.i4     0x2f4cca7c
  IL_02ec:  bgt.un.s   IL_0314
  IL_02ee:  ldloc.0
  IL_02ef:  ldc.i4     0x2a932d90
  IL_02f4:  beq        IL_0f6f
  IL_02f9:  ldloc.0
  IL_02fa:  ldc.i4     0x2c81f023
  IL_02ff:  beq        IL_19da
  IL_0304:  ldloc.0
  IL_0305:  ldc.i4     0x2f4cca7c
  IL_030a:  beq        IL_1908
  IL_030f:  br         IL_2184
  IL_0314:  ldloc.0
  IL_0315:  ldc.i4     0x2fb5fb43
  IL_031a:  bgt.un.s   IL_0337
  IL_031c:  ldloc.0
  IL_031d:  ldc.i4     0x2f5c2137
  IL_0322:  beq        IL_1596
  IL_0327:  ldloc.0
  IL_0328:  ldc.i4     0x2fb5fb43
  IL_032d:  beq        IL_167d
  IL_0332:  br         IL_2184
  IL_0337:  ldloc.0
  IL_0338:  ldc.i4     0x305d8a52
  IL_033d:  beq        IL_178e
  IL_0342:  ldloc.0
  IL_0343:  ldc.i4     0x315a74f8
  IL_0348:  beq        IL_1191
  IL_034d:  br         IL_2184
  IL_0352:  ldloc.0
  IL_0353:  ldc.i4     0x341798d6
  IL_0358:  bgt.un.s   IL_0380
  IL_035a:  ldloc.0
  IL_035b:  ldc.i4     0x323d8177
  IL_0360:  beq        IL_184b
  IL_0365:  ldloc.0
  IL_0366:  ldc.i4     0x333d830a
  IL_036b:  beq        IL_1821
  IL_0370:  ldloc.0
  IL_0371:  ldc.i4     0x341798d6
  IL_0376:  beq        IL_180c
  IL_037b:  br         IL_2184
  IL_0380:  ldloc.0
  IL_0381:  ldc.i4     0x35b53372
  IL_0386:  bgt.un.s   IL_03a3
  IL_0388:  ldloc.0
  IL_0389:  ldc.i4     0x34bfd292
  IL_038e:  beq        IL_1aac
  IL_0393:  ldloc.0
  IL_0394:  ldc.i4     0x35b53372
  IL_0399:  beq        IL_1710
  IL_039e:  br         IL_2184
  IL_03a3:  ldloc.0
  IL_03a4:  ldc.i4     0x35c0eda3
  IL_03a9:  beq        IL_1653
  IL_03ae:  ldloc.0
  IL_03af:  ldc.i4     0x38c6cc37
  IL_03b4:  beq        IL_1485
  IL_03b9:  br         IL_2184
  IL_03be:  ldloc.0
  IL_03bf:  ldc.i4     0x64ed874e
  IL_03c4:  bgt.un     IL_0594
  IL_03c9:  ldloc.0
  IL_03ca:  ldc.i4     0x4bfefd8c
  IL_03cf:  bgt.un     IL_04b4
  IL_03d4:  ldloc.0
  IL_03d5:  ldc.i4     0x455f7d3b
  IL_03da:  bgt.un.s   IL_0448
  IL_03dc:  ldloc.0
  IL_03dd:  ldc.i4     0x409a11e6
  IL_03e2:  bgt.un.s   IL_040a
  IL_03e4:  ldloc.0
  IL_03e5:  ldc.i4     0x3cbefaf8
  IL_03ea:  beq        IL_10fe
  IL_03ef:  ldloc.0
  IL_03f0:  ldc.i4     0x3db1994e
  IL_03f5:  beq        IL_1a58
  IL_03fa:  ldloc.0
  IL_03fb:  ldc.i4     0x409a11e6
  IL_0400:  beq        IL_1581
  IL_0405:  br         IL_2184
  IL_040a:  ldloc.0
  IL_040b:  ldc.i4     0x43473ee5
  IL_0410:  bgt.un.s   IL_042d
  IL_0412:  ldloc.0
  IL_0413:  ldc.i4     0x40ad1df2
  IL_0418:  beq        IL_1e87
  IL_041d:  ldloc.0
  IL_041e:  ldc.i4     0x43473ee5
  IL_0423:  beq        IL_1a04
  IL_0428:  br         IL_2184
  IL_042d:  ldloc.0
  IL_042e:  ldc.i4     0x43dde827
  IL_0433:  beq        IL_11e5
  IL_0438:  ldloc.0
  IL_0439:  ldc.i4     0x455f7d3b
  IL_043e:  beq        IL_18f3
  IL_0443:  br         IL_2184
  IL_0448:  ldloc.0
  IL_0449:  ldc.i4     0x49dd7dcb
  IL_044e:  bgt.un.s   IL_0476
  IL_0450:  ldloc.0
  IL_0451:  ldc.i4     0x46d186b0
  IL_0456:  beq        IL_17a3
  IL_045b:  ldloc.0
  IL_045c:  ldc.i4     0x474bacf2
  IL_0461:  beq        IL_11fa
  IL_0466:  ldloc.0
  IL_0467:  ldc.i4     0x49dd7dcb
  IL_046c:  beq        IL_0fc3
  IL_0471:  br         IL_2184
  IL_0476:  ldloc.0
  IL_0477:  ldc.i4     0x4a74c64a
  IL_047c:  bgt.un.s   IL_0499
  IL_047e:  ldloc.0
  IL_047f:  ldc.i4     0x4a2124db
  IL_0484:  beq        IL_152d
  IL_0489:  ldloc.0
  IL_048a:  ldc.i4     0x4a74c64a
  IL_048f:  beq        IL_1389
  IL_0494:  br         IL_2184
  IL_0499:  ldloc.0
  IL_049a:  ldc.i4     0x4bdfa75f
  IL_049f:  beq        IL_19c5
  IL_04a4:  ldloc.0
  IL_04a5:  ldc.i4     0x4bfefd8c
  IL_04aa:  beq        IL_17f7
  IL_04af:  br         IL_2184
  IL_04b4:  ldloc.0
  IL_04b5:  ldc.i4     0x5ae00ad0
  IL_04ba:  bgt.un.s   IL_0528
  IL_04bc:  ldloc.0
  IL_04bd:  ldc.i4     0x53ca5aaf
  IL_04c2:  bgt.un.s   IL_04ea
  IL_04c4:  ldloc.0
  IL_04c5:  ldc.i4     0x5078a99e
  IL_04ca:  beq        IL_0fed
  IL_04cf:  ldloc.0
  IL_04d0:  ldc.i4     0x52ca591c
  IL_04d5:  beq        IL_1407
  IL_04da:  ldloc.0
  IL_04db:  ldc.i4     0x53ca5aaf
  IL_04e0:  beq        IL_1446
  IL_04e5:  br         IL_2184
  IL_04ea:  ldloc.0
  IL_04eb:  ldc.i4     0x58bca78e
  IL_04f0:  bgt.un.s   IL_050d
  IL_04f2:  ldloc.0
  IL_04f3:  ldc.i4     0x572a4188
  IL_04f8:  beq        IL_12a2
  IL_04fd:  ldloc.0
  IL_04fe:  ldc.i4     0x58bca78e
  IL_0503:  beq        IL_0f84
  IL_0508:  br         IL_2184
  IL_050d:  ldloc.0
  IL_050e:  ldc.i4     0x5a5f7d91
  IL_0513:  beq        IL_0f30
  IL_0518:  ldloc.0
  IL_0519:  ldc.i4     0x5ae00ad0
  IL_051e:  beq        IL_0fae
  IL_0523:  br         IL_2184
  IL_0528:  ldloc.0
  IL_0529:  ldc.i4     0x6063309a
  IL_052e:  bgt.un.s   IL_0556
  IL_0530:  ldloc.0
  IL_0531:  ldc.i4     0x5b72871c
  IL_0536:  beq        IL_13f2
  IL_053b:  ldloc.0
  IL_053c:  ldc.i4     0x5fede3ca
  IL_0541:  beq        IL_173a
  IL_0546:  ldloc.0
  IL_0547:  ldc.i4     0x6063309a
  IL_054c:  beq        IL_1f98
  IL_0551:  br         IL_2184
  IL_0556:  ldloc.0
  IL_0557:  ldc.i4     0x61f6c9d5
  IL_055c:  bgt.un.s   IL_0579
  IL_055e:  ldloc.0
  IL_055f:  ldc.i4     0x61d89cab
  IL_0564:  beq        IL_2094
  IL_0569:  ldloc.0
  IL_056a:  ldc.i4     0x61f6c9d5
  IL_056f:  beq        IL_0f5a
  IL_0574:  br         IL_2184
  IL_0579:  ldloc.0
  IL_057a:  ldc.i4     0x64e4818a
  IL_057f:  beq        IL_13b3
  IL_0584:  ldloc.0
  IL_0585:  ldc.i4     0x64ed874e
  IL_058a:  beq        IL_15d5
  IL_058f:  br         IL_2184
  IL_0594:  ldloc.0
  IL_0595:  ldc.i4     0x7e34f956
  IL_059a:  bgt.un     IL_067f
  IL_059f:  ldloc.0
  IL_05a0:  ldc.i4     0x6b08265a
  IL_05a5:  bgt.un.s   IL_0613
  IL_05a7:  ldloc.0
  IL_05a8:  ldc.i4     0x69082334
  IL_05ad:  bgt.un.s   IL_05d5
  IL_05af:  ldloc.0
  IL_05b0:  ldc.i4     0x65795313
  IL_05b5:  beq        IL_1128
  IL_05ba:  ldloc.0
  IL_05bb:  ldc.i4     0x66f9fd96
  IL_05c0:  beq        IL_1f44
  IL_05c5:  ldloc.0
  IL_05c6:  ldc.i4     0x69082334
  IL_05cb:  beq        IL_1557
  IL_05d0:  br         IL_2184
  IL_05d5:  ldloc.0
  IL_05d6:  ldc.i4     0x6922f347
  IL_05db:  bgt.un.s   IL_05f8
  IL_05dd:  ldloc.0
  IL_05de:  ldc.i4     0x690dd584
  IL_05e3:  beq        IL_10aa
  IL_05e8:  ldloc.0
  IL_05e9:  ldc.i4     0x6922f347
  IL_05ee:  beq        IL_1e5d
  IL_05f3:  br         IL_2184
  IL_05f8:  ldloc.0
  IL_05f9:  ldc.i4     0x6a103d13
  IL_05fe:  beq        IL_1cce
  IL_0603:  ldloc.0
  IL_0604:  ldc.i4     0x6b08265a
  IL_0609:  beq        IL_1542
  IL_060e:  br         IL_2184
  IL_0613:  ldloc.0
  IL_0614:  ldc.i4     0x707a4a2f
  IL_0619:  bgt.un.s   IL_0641
  IL_061b:  ldloc.0
  IL_061c:  ldc.i4     0x6cab0635
  IL_0621:  beq        IL_18b4
  IL_0626:  ldloc.0
  IL_0627:  ldc.i4     0x6fb5337e
  IL_062c:  beq        IL_106b
  IL_0631:  ldloc.0
  IL_0632:  ldc.i4     0x707a4a2f
  IL_0637:  beq        IL_1947
  IL_063c:  br         IL_2184
  IL_0641:  ldloc.0
  IL_0642:  ldc.i4     0x76564766
  IL_0647:  bgt.un.s   IL_0664
  IL_0649:  ldloc.0
  IL_064a:  ldc.i4     0x727a797c
  IL_064f:  beq        IL_1431
  IL_0654:  ldloc.0
  IL_0655:  ldc.i4     0x76564766
  IL_065a:  beq        IL_1e33
  IL_065f:  br         IL_2184
  IL_0664:  ldloc.0
  IL_0665:  ldc.i4     0x76a68d74
  IL_066a:  beq        IL_1167
  IL_066f:  ldloc.0
  IL_0670:  ldc.i4     0x7e34f956
  IL_0675:  beq        IL_139e
  IL_067a:  br         IL_2184
  IL_067f:  ldloc.0
  IL_0680:  ldc.i4     0x83ce448e
  IL_0685:  bgt.un.s   IL_06f3
  IL_0687:  ldloc.0
  IL_0688:  ldc.i4     0x803babfe
  IL_068d:  bgt.un.s   IL_06b5
  IL_068f:  ldloc.0
  IL_0690:  ldc.i4     0x7e62165c
  IL_0695:  beq        IL_1860
  IL_069a:  ldloc.0
  IL_069b:  ldc.i4     0x7e762f73
  IL_06a0:  beq        IL_191d
  IL_06a5:  ldloc.0
  IL_06a6:  ldc.i4     0x803babfe
  IL_06ab:  beq        IL_12b7
  IL_06b0:  br         IL_2184
  IL_06b5:  ldloc.0
  IL_06b6:  ldc.i4     0x81dd4224
  IL_06bb:  bgt.un.s   IL_06d8
  IL_06bd:  ldloc.0
  IL_06be:  ldc.i4     0x8091e1ba
  IL_06c3:  beq        IL_16a7
  IL_06c8:  ldloc.0
  IL_06c9:  ldc.i4     0x81dd4224
  IL_06ce:  beq        IL_1e72
  IL_06d3:  br         IL_2184
  IL_06d8:  ldloc.0
  IL_06d9:  ldc.i4     0x82982bae
  IL_06de:  beq        IL_1eb1
  IL_06e3:  ldloc.0
  IL_06e4:  ldc.i4     0x83ce448e
  IL_06e9:  beq        IL_1bbd
  IL_06ee:  br         IL_2184
  IL_06f3:  ldloc.0
  IL_06f4:  ldc.i4     0x895f16b3
  IL_06f9:  bgt.un.s   IL_0739
  IL_06fb:  ldloc.0
  IL_06fc:  ldc.i4     0x86e56312
  IL_0701:  bgt.un.s   IL_071e
  IL_0703:  ldloc.0
  IL_0704:  ldc.i4     0x8495dbf6
  IL_0709:  beq        IL_207f
  IL_070e:  ldloc.0
  IL_070f:  ldc.i4     0x86e56312
  IL_0714:  beq        IL_1c3b
  IL_0719:  br         IL_2184
  IL_071e:  ldloc.0
  IL_071f:  ldc.i4     0x886d57ef
  IL_0724:  beq        IL_1c26
  IL_0729:  ldloc.0
  IL_072a:  ldc.i4     0x895f16b3
  IL_072f:  beq        IL_1056
  IL_0734:  br         IL_2184
  IL_0739:  ldloc.0
  IL_073a:  ldc.i4     0x89867abb
  IL_073f:  bgt.un.s   IL_075c
  IL_0741:  ldloc.0
  IL_0742:  ldc.i4     0x8965390c
  IL_0747:  beq        IL_1fec
  IL_074c:  ldloc.0
  IL_074d:  ldc.i4     0x89867abb
  IL_0752:  beq        IL_210c
  IL_0757:  br         IL_2184
  IL_075c:  ldloc.0
  IL_075d:  ldc.i4     0x8a546774
  IL_0762:  beq        IL_1c65
  IL_0767:  ldloc.0
  IL_0768:  ldc.i4     0x93254270
  IL_076d:  beq        IL_1335
  IL_0772:  br         IL_2184
  IL_0777:  ldloc.0
  IL_0778:  ldc.i4     0xc6816b27
  IL_077d:  bgt.un     IL_0b3b
  IL_0782:  ldloc.0
  IL_0783:  ldc.i4     0xabd163b5
  IL_0788:  bgt.un     IL_0958
  IL_078d:  ldloc.0
  IL_078e:  ldc.i4     0xa19e0b35
  IL_0793:  bgt.un     IL_0878
  IL_0798:  ldloc.0
  IL_0799:  ldc.i4     0x9b727df3
  IL_079e:  bgt.un.s   IL_080c
  IL_07a0:  ldloc.0
  IL_07a1:  ldc.i4     0x95604137
  IL_07a6:  bgt.un.s   IL_07ce
  IL_07a8:  ldloc.0
  IL_07a9:  ldc.i4     0x937219ca
  IL_07ae:  beq        IL_0ef1
  IL_07b3:  ldloc.0
  IL_07b4:  ldc.i4     0x9472756b
  IL_07b9:  beq        IL_1ec6
  IL_07be:  ldloc.0
  IL_07bf:  ldc.i4     0x95604137
  IL_07c4:  beq        IL_0f45
  IL_07c9:  br         IL_2184
  IL_07ce:  ldloc.0
  IL_07cf:  ldc.i4     0x9888188f
  IL_07d4:  bgt.un.s   IL_07f1
  IL_07d6:  ldloc.0
  IL_07d7:  ldc.i4     0x96939bc6
  IL_07dc:  beq        IL_17b8
  IL_07e1:  ldloc.0
  IL_07e2:  ldc.i4     0x9888188f
  IL_07e7:  beq        IL_195c
  IL_07ec:  br         IL_2184
  IL_07f1:  ldloc.0
  IL_07f2:  ldc.i4     0x992dbe8d
  IL_07f7:  beq        IL_1a6d
  IL_07fc:  ldloc.0
  IL_07fd:  ldc.i4     0x9b727df3
  IL_0802:  beq        IL_1224
  IL_0807:  br         IL_2184
  IL_080c:  ldloc.0
  IL_080d:  ldc.i4     0x9f1949ce
  IL_0812:  bgt.un.s   IL_083a
  IL_0814:  ldloc.0
  IL_0815:  ldc.i4     0x9b8cfbe6
  IL_081a:  beq        IL_163e
  IL_081f:  ldloc.0
  IL_0820:  ldc.i4     0x9d09dd0e
  IL_0825:  beq        IL_0f1b
  IL_082a:  ldloc.0
  IL_082b:  ldc.i4     0x9f1949ce
  IL_0830:  beq        IL_20a9
  IL_0835:  br         IL_2184
  IL_083a:  ldloc.0
  IL_083b:  ldc.i4     0xa0ae197d
  IL_0840:  bgt.un.s   IL_085d
  IL_0842:  ldloc.0
  IL_0843:  ldc.i4     0x9f8d2aad
  IL_0848:  beq        IL_1bfc
  IL_084d:  ldloc.0
  IL_084e:  ldc.i4     0xa0ae197d
  IL_0853:  beq        IL_206a
  IL_0858:  br         IL_2184
  IL_085d:  ldloc.0
  IL_085e:  ldc.i4     0xa1369482
  IL_0863:  beq        IL_1692
  IL_0868:  ldloc.0
  IL_0869:  ldc.i4     0xa19e0b35
  IL_086e:  beq        IL_1113
  IL_0873:  br         IL_2184
  IL_0878:  ldloc.0
  IL_0879:  ldc.i4     0xa72856a7
  IL_087e:  bgt.un.s   IL_08ec
  IL_0880:  ldloc.0
  IL_0881:  ldc.i4     0xa45b7edf
  IL_0886:  bgt.un.s   IL_08ae
  IL_0888:  ldloc.0
  IL_0889:  ldc.i4     0xa26d6489
  IL_088e:  beq        IL_149a
  IL_0893:  ldloc.0
  IL_0894:  ldc.i4     0xa445e39b
  IL_0899:  beq        IL_1ca4
  IL_089e:  ldloc.0
  IL_089f:  ldc.i4     0xa45b7edf
  IL_08a4:  beq        IL_15c0
  IL_08a9:  br         IL_2184
  IL_08ae:  ldloc.0
  IL_08af:  ldc.i4     0xa6428622
  IL_08b4:  bgt.un.s   IL_08d1
  IL_08b6:  ldloc.0
  IL_08b7:  ldc.i4     0xa517cc3f
  IL_08bc:  beq        IL_113d
  IL_08c1:  ldloc.0
  IL_08c2:  ldc.i4     0xa6428622
  IL_08c7:  beq        IL_1b54
  IL_08cc:  br         IL_2184
  IL_08d1:  ldloc.0
  IL_08d2:  ldc.i4     0xa6d43b30
  IL_08d7:  beq        IL_1278
  IL_08dc:  ldloc.0
  IL_08dd:  ldc.i4     0xa72856a7
  IL_08e2:  beq        IL_1095
  IL_08e7:  br         IL_2184
  IL_08ec:  ldloc.0
  IL_08ed:  ldc.i4     0xaa88ad61
  IL_08f2:  bgt.un.s   IL_091a
  IL_08f4:  ldloc.0
  IL_08f5:  ldc.i4     0xa7855456
  IL_08fa:  beq        IL_1668
  IL_08ff:  ldloc.0
  IL_0900:  ldc.i4     0xa974f9e2
  IL_0905:  beq        IL_1320
  IL_090a:  ldloc.0
  IL_090b:  ldc.i4     0xaa88ad61
  IL_0910:  beq        IL_174f
  IL_0915:  br         IL_2184
  IL_091a:  ldloc.0
  IL_091b:  ldc.i4     0xaac796e8
  IL_0920:  bgt.un.s   IL_093d
  IL_0922:  ldloc.0
  IL_0923:  ldc.i4     0xaa8947f7
  IL_0928:  beq        IL_1a97
  IL_092d:  ldloc.0
  IL_092e:  ldc.i4     0xaac796e8
  IL_0933:  beq        IL_1edb
  IL_0938:  br         IL_2184
  IL_093d:  ldloc.0
  IL_093e:  ldc.i4     0xaaf89cf7
  IL_0943:  beq        IL_20e8
  IL_0948:  ldloc.0
  IL_0949:  ldc.i4     0xabd163b5
  IL_094e:  beq        IL_10e9
  IL_0953:  br         IL_2184
  IL_0958:  ldloc.0
  IL_0959:  ldc.i4     0xbaa50aa9
  IL_095e:  bgt.un     IL_0a43
  IL_0963:  ldloc.0
  IL_0964:  ldc.i4     0xb372c522
  IL_0969:  bgt.un.s   IL_09d7
  IL_096b:  ldloc.0
  IL_096c:  ldc.i4     0xafa908eb
  IL_0971:  bgt.un.s   IL_0999
  IL_0973:  ldloc.0
  IL_0974:  ldc.i4     0xabdd3b18
  IL_0979:  beq        IL_1ef0
  IL_097e:  ldloc.0
  IL_097f:  ldc.i4     0xac1855c9
  IL_0984:  beq        IL_14c4
  IL_0989:  ldloc.0
  IL_098a:  ldc.i4     0xafa908eb
  IL_098f:  beq        IL_1c8f
  IL_0994:  br         IL_2184
  IL_0999:  ldloc.0
  IL_099a:  ldc.i4     0xb0ced153
  IL_099f:  bgt.un.s   IL_09bc
  IL_09a1:  ldloc.0
  IL_09a2:  ldc.i4     0xb0068fc4
  IL_09a7:  beq        IL_2001
  IL_09ac:  ldloc.0
  IL_09ad:  ldc.i4     0xb0ced153
  IL_09b2:  beq        IL_12cc
  IL_09b7:  br         IL_2184
  IL_09bc:  ldloc.0
  IL_09bd:  ldc.i4     0xb1ed8222
  IL_09c2:  beq        IL_1fad
  IL_09c7:  ldloc.0
  IL_09c8:  ldc.i4     0xb372c522
  IL_09cd:  beq        IL_1d0d
  IL_09d2:  br         IL_2184
  IL_09d7:  ldloc.0
  IL_09d8:  ldc.i4     0xb867b0a7
  IL_09dd:  bgt.un.s   IL_0a05
  IL_09df:  ldloc.0
  IL_09e0:  ldc.i4     0xb7a04f18
  IL_09e5:  beq        IL_128d
  IL_09ea:  ldloc.0
  IL_09eb:  ldc.i4     0xb7c1d5fe
  IL_09f0:  beq        IL_1152
  IL_09f5:  ldloc.0
  IL_09f6:  ldc.i4     0xb867b0a7
  IL_09fb:  beq        IL_1f2f
  IL_0a00:  br         IL_2184
  IL_0a05:  ldloc.0
  IL_0a06:  ldc.i4     0xb9ca4931
  IL_0a0b:  bgt.un.s   IL_0a28
  IL_0a0d:  ldloc.0
  IL_0a0e:  ldc.i4     0xb8ddd025
  IL_0a13:  beq        IL_199b
  IL_0a18:  ldloc.0
  IL_0a19:  ldc.i4     0xb9ca4931
  IL_0a1e:  beq        IL_1e9c
  IL_0a23:  br         IL_2184
  IL_0a28:  ldloc.0
  IL_0a29:  ldc.i4     0xb9cc5c0b
  IL_0a2e:  beq        IL_1ddf
  IL_0a33:  ldloc.0
  IL_0a34:  ldc.i4     0xbaa50aa9
  IL_0a39:  beq        IL_1a82
  IL_0a3e:  br         IL_2184
  IL_0a43:  ldloc.0
  IL_0a44:  ldc.i4     0xbf024ba2
  IL_0a49:  bgt.un.s   IL_0ab7
  IL_0a4b:  ldloc.0
  IL_0a4c:  ldc.i4     0xbd5a7ac0
  IL_0a51:  bgt.un.s   IL_0a79
  IL_0a53:  ldloc.0
  IL_0a54:  ldc.i4     0xbae65831
  IL_0a59:  beq        IL_1629
  IL_0a5e:  ldloc.0
  IL_0a5f:  ldc.i4     0xbaeb1d00
  IL_0a64:  beq        IL_1d61
  IL_0a69:  ldloc.0
  IL_0a6a:  ldc.i4     0xbd5a7ac0
  IL_0a6f:  beq        IL_1764
  IL_0a74:  br         IL_2184
  IL_0a79:  ldloc.0
  IL_0a7a:  ldc.i4     0xbe9c6125
  IL_0a7f:  bgt.un.s   IL_0a9c
  IL_0a81:  ldloc.0
  IL_0a82:  ldc.i4     0xbdd584ee
  IL_0a87:  beq        IL_1d4c
  IL_0a8c:  ldloc.0
  IL_0a8d:  ldc.i4     0xbe9c6125
  IL_0a92:  beq        IL_1f59
  IL_0a97:  br         IL_2184
  IL_0a9c:  ldloc.0
  IL_0a9d:  ldc.i4     0xbef81d14
  IL_0aa2:  beq        IL_120f
  IL_0aa7:  ldloc.0
  IL_0aa8:  ldc.i4     0xbf024ba2
  IL_0aad:  beq        IL_1da0
  IL_0ab2:  br         IL_2184
  IL_0ab7:  ldloc.0
  IL_0ab8:  ldc.i4     0xc158896f
  IL_0abd:  bgt.un.s   IL_0afd
  IL_0abf:  ldloc.0
  IL_0ac0:  ldc.i4     0xbfcdf9de
  IL_0ac5:  bgt.un.s   IL_0ae2
  IL_0ac7:  ldloc.0
  IL_0ac8:  ldc.i4     0xbf7ad191
  IL_0acd:  beq        IL_1779
  IL_0ad2:  ldloc.0
  IL_0ad3:  ldc.i4     0xbfcdf9de
  IL_0ad8:  beq        IL_2040
  IL_0add:  br         IL_2184
  IL_0ae2:  ldloc.0
  IL_0ae3:  ldc.i4     0xc0d01d2f
  IL_0ae8:  beq        IL_2148
  IL_0aed:  ldloc.0
  IL_0aee:  ldc.i4     0xc158896f
  IL_0af3:  beq        IL_0f99
  IL_0af8:  br         IL_2184
  IL_0afd:  ldloc.0
  IL_0afe:  ldc.i4     0xc3cf479f
  IL_0b03:  bgt.un.s   IL_0b20
  IL_0b05:  ldloc.0
  IL_0b06:  ldc.i4     0xc2d30dbd
  IL_0b0b:  beq        IL_1b15
  IL_0b10:  ldloc.0
  IL_0b11:  ldc.i4     0xc3cf479f
  IL_0b16:  beq        IL_1017
  IL_0b1b:  br         IL_2184
  IL_0b20:  ldloc.0
  IL_0b21:  ldc.i4     0xc4135709
  IL_0b26:  beq        IL_1db5
  IL_0b2b:  ldloc.0
  IL_0b2c:  ldc.i4     0xc6816b27
  IL_0b31:  beq        IL_145b
  IL_0b36:  br         IL_2184
  IL_0b3b:  ldloc.0
  IL_0b3c:  ldc.i4     0xec3e2fe1
  IL_0b41:  bgt.un     IL_0d11
  IL_0b46:  ldloc.0
  IL_0b47:  ldc.i4     0xd6b51455
  IL_0b4c:  bgt.un     IL_0c31
  IL_0b51:  ldloc.0
  IL_0b52:  ldc.i4     0xcc9a2e03
  IL_0b57:  bgt.un.s   IL_0bc5
  IL_0b59:  ldloc.0
  IL_0b5a:  ldc.i4     0xc9f4640b
  IL_0b5f:  bgt.un.s   IL_0b87
  IL_0b61:  ldloc.0
  IL_0b62:  ldc.i4     0xc6eb64f6
  IL_0b67:  beq        IL_134a
  IL_0b6c:  ldloc.0
  IL_0b6d:  ldc.i4     0xc736a907
  IL_0b72:  beq        IL_1041
  IL_0b77:  ldloc.0
  IL_0b78:  ldc.i4     0xc9f4640b
  IL_0b7d:  beq        IL_12f6
  IL_0b82:  br         IL_2184
  IL_0b87:  ldloc.0
  IL_0b88:  ldc.i4     0xcc0d0856
  IL_0b8d:  bgt.un.s   IL_0baa
  IL_0b8f:  ldloc.0
  IL_0b90:  ldc.i4     0xcb416d65
  IL_0b95:  beq        IL_1d22
  IL_0b9a:  ldloc.0
  IL_0b9b:  ldc.i4     0xcc0d0856
  IL_0ba0:  beq        IL_15ff
  IL_0ba5:  br         IL_2184
  IL_0baa:  ldloc.0
  IL_0bab:  ldc.i4     0xcc6f4fe0
  IL_0bb0:  beq        IL_1932
  IL_0bb5:  ldloc.0
  IL_0bb6:  ldc.i4     0xcc9a2e03
  IL_0bbb:  beq        IL_1c7a
  IL_0bc0:  br         IL_2184
  IL_0bc5:  ldloc.0
  IL_0bc6:  ldc.i4     0xd05f1663
  IL_0bcb:  bgt.un.s   IL_0bf3
  IL_0bcd:  ldloc.0
  IL_0bce:  ldc.i4     0xcd190185
  IL_0bd3:  beq        IL_1d8b
  IL_0bd8:  ldloc.0
  IL_0bd9:  ldc.i4     0xce0d0b7c
  IL_0bde:  beq        IL_1614
  IL_0be3:  ldloc.0
  IL_0be4:  ldc.i4     0xd05f1663
  IL_0be9:  beq        IL_16bc
  IL_0bee:  br         IL_2184
  IL_0bf3:  ldloc.0
  IL_0bf4:  ldc.i4     0xd642d1b2
  IL_0bf9:  bgt.un.s   IL_0c16
  IL_0bfb:  ldloc.0
  IL_0bfc:  ldc.i4     0xd55997bc
  IL_0c01:  beq        IL_1df4
  IL_0c06:  ldloc.0
  IL_0c07:  ldc.i4     0xd642d1b2
  IL_0c0c:  beq        IL_1b3f
  IL_0c11:  br         IL_2184
  IL_0c16:  ldloc.0
  IL_0c17:  ldc.i4     0xd67d0512
  IL_0c1c:  beq        IL_1374
  IL_0c21:  ldloc.0
  IL_0c22:  ldc.i4     0xd6b51455
  IL_0c27:  beq        IL_1836
  IL_0c2c:  br         IL_2184
  IL_0c31:  ldloc.0
  IL_0c32:  ldc.i4     0xe7009fb7
  IL_0c37:  bgt.un.s   IL_0ca5
  IL_0c39:  ldloc.0
  IL_0c3a:  ldc.i4     0xe06f4684
  IL_0c3f:  bgt.un.s   IL_0c67
  IL_0c41:  ldloc.0
  IL_0c42:  ldc.i4     0xda6a3615
  IL_0c47:  beq        IL_1ba8
  IL_0c4c:  ldloc.0
  IL_0c4d:  ldc.i4     0xde091dac
  IL_0c52:  beq        IL_1e48
  IL_0c57:  ldloc.0
  IL_0c58:  ldc.i4     0xe06f4684
  IL_0c5d:  beq        IL_141c
  IL_0c62:  br         IL_2184
  IL_0c67:  ldloc.0
  IL_0c68:  ldc.i4     0xe4b51449
  IL_0c6d:  bgt.un.s   IL_0c8a
  IL_0c6f:  ldloc.0
  IL_0c70:  ldc.i4     0xe482e420
  IL_0c75:  beq        IL_15ea
  IL_0c7a:  ldloc.0
  IL_0c7b:  ldc.i4     0xe4b51449
  IL_0c80:  beq        IL_16e6
  IL_0c85:  br         IL_2184
  IL_0c8a:  ldloc.0
  IL_0c8b:  ldc.i4     0xe600b237
  IL_0c90:  beq        IL_1b93
  IL_0c95:  ldloc.0
  IL_0c96:  ldc.i4     0xe7009fb7
  IL_0c9b:  beq        IL_135f
  IL_0ca0:  br         IL_2184
  IL_0ca5:  ldloc.0
  IL_0ca6:  ldc.i4     0xea4b9afc
  IL_0cab:  bgt.un.s   IL_0cd3
  IL_0cad:  ldloc.0
  IL_0cae:  ldc.i4     0xe8a3d0e1
  IL_0cb3:  beq        IL_1ad6
  IL_0cb8:  ldloc.0
  IL_0cb9:  ldc.i4     0xe8cf3efe
  IL_0cbe:  beq        IL_1d37
  IL_0cc3:  ldloc.0
  IL_0cc4:  ldc.i4     0xea4b9afc
  IL_0cc9:  beq        IL_2055
  IL_0cce:  br         IL_2184
  IL_0cd3:  ldloc.0
  IL_0cd4:  ldc.i4     0xebdb35fa
  IL_0cd9:  bgt.un.s   IL_0cf6
  IL_0cdb:  ldloc.0
  IL_0cdc:  ldc.i4     0xeacd5737
  IL_0ce1:  beq        IL_1f1a
  IL_0ce6:  ldloc.0
  IL_0ce7:  ldc.i4     0xebdb35fa
  IL_0cec:  beq        IL_13c8
  IL_0cf1:  br         IL_2184
  IL_0cf6:  ldloc.0
  IL_0cf7:  ldc.i4     0xec3aca8d
  IL_0cfc:  beq        IL_1be7
  IL_0d01:  ldloc.0
  IL_0d02:  ldc.i4     0xec3e2fe1
  IL_0d07:  beq        IL_1fc2
  IL_0d0c:  br         IL_2184
  IL_0d11:  ldloc.0
  IL_0d12:  ldc.i4     0xf5e05a6b
  IL_0d17:  bgt.un     IL_0dfc
  IL_0d1c:  ldloc.0
  IL_0d1d:  ldc.i4     0xf1e6c9c8
  IL_0d22:  bgt.un.s   IL_0d90
  IL_0d24:  ldloc.0
  IL_0d25:  ldc.i4     0xee3feea8
  IL_0d2a:  bgt.un.s   IL_0d52
  IL_0d2c:  ldloc.0
  IL_0d2d:  ldc.i4     0xeccec0be
  IL_0d32:  beq        IL_16d1
  IL_0d37:  ldloc.0
  IL_0d38:  ldc.i4     0xedb243f0
  IL_0d3d:  beq        IL_124e
  IL_0d42:  ldloc.0
  IL_0d43:  ldc.i4     0xee3feea8
  IL_0d48:  beq        IL_189f
  IL_0d4d:  br         IL_2184
  IL_0d52:  ldloc.0
  IL_0d53:  ldc.i4     0xef81b6ca
  IL_0d58:  bgt.un.s   IL_0d75
  IL_0d5a:  ldloc.0
  IL_0d5b:  ldc.i4     0xeed17667
  IL_0d60:  beq        IL_1e09
  IL_0d65:  ldloc.0
  IL_0d66:  ldc.i4     0xef81b6ca
  IL_0d6b:  beq        IL_14ee
  IL_0d70:  br         IL_2184
  IL_0d75:  ldloc.0
  IL_0d76:  ldc.i4     0xf1a689a6
  IL_0d7b:  beq        IL_1c11
  IL_0d80:  ldloc.0
  IL_0d81:  ldc.i4     0xf1e6c9c8
  IL_0d86:  beq        IL_1fd7
  IL_0d8b:  br         IL_2184
  IL_0d90:  ldloc.0
  IL_0d91:  ldc.i4     0xf2c43079
  IL_0d96:  bgt.un.s   IL_0dbe
  IL_0d98:  ldloc.0
  IL_0d99:  ldc.i4     0xf24af6dc
  IL_0d9e:  beq        IL_1cb9
  IL_0da3:  ldloc.0
  IL_0da4:  ldc.i4     0xf2963331
  IL_0da9:  beq        IL_1ce3
  IL_0dae:  ldloc.0
  IL_0daf:  ldc.i4     0xf2c43079
  IL_0db4:  beq        IL_10bf
  IL_0db9:  br         IL_2184
  IL_0dbe:  ldloc.0
  IL_0dbf:  ldc.i4     0xf53166a8
  IL_0dc4:  bgt.un.s   IL_0de1
  IL_0dc6:  ldloc.0
  IL_0dc7:  ldc.i4     0xf43f03a6
  IL_0dcc:  beq        IL_1a43
  IL_0dd1:  ldloc.0
  IL_0dd2:  ldc.i4     0xf53166a8
  IL_0dd7:  beq        IL_18de
  IL_0ddc:  br         IL_2184
  IL_0de1:  ldloc.0
  IL_0de2:  ldc.i4     0xf565000a
  IL_0de7:  beq        IL_1725
  IL_0dec:  ldloc.0
  IL_0ded:  ldc.i4     0xf5e05a6b
  IL_0df2:  beq        IL_102c
  IL_0df7:  br         IL_2184
  IL_0dfc:  ldloc.0
  IL_0dfd:  ldc.i4     0xf89e7910
  IL_0e02:  bgt.un.s   IL_0e70
  IL_0e04:  ldloc.0
  IL_0e05:  ldc.i4     0xf68ddabd
  IL_0e0a:  bgt.un.s   IL_0e32
  IL_0e0c:  ldloc.0
  IL_0e0d:  ldc.i4     0xf61ee173
  IL_0e12:  beq        IL_1f6e
  IL_0e17:  ldloc.0
  IL_0e18:  ldc.i4     0xf68c7b31
  IL_0e1d:  beq        IL_211b
  IL_0e22:  ldloc.0
  IL_0e23:  ldc.i4     0xf68ddabd
  IL_0e28:  beq        IL_10d4
  IL_0e2d:  br         IL_2184
  IL_0e32:  ldloc.0
  IL_0e33:  ldc.i4     0xf718ff34
  IL_0e38:  bgt.un.s   IL_0e55
  IL_0e3a:  ldloc.0
  IL_0e3b:  ldc.i4     0xf6aeaa6e
  IL_0e40:  beq        IL_1a19
  IL_0e45:  ldloc.0
  IL_0e46:  ldc.i4     0xf718ff34
  IL_0e4b:  beq        IL_1f83
  IL_0e50:  br         IL_2184
  IL_0e55:  ldloc.0
  IL_0e56:  ldc.i4     0xf722ab01
  IL_0e5b:  beq        IL_1a2e
  IL_0e60:  ldloc.0
  IL_0e61:  ldc.i4     0xf89e7910
  IL_0e66:  beq        IL_19b0
  IL_0e6b:  br         IL_2184
  IL_0e70:  ldloc.0
  IL_0e71:  ldc.i4     0xf9c905c2
  IL_0e76:  bgt.un.s   IL_0eb6
  IL_0e78:  ldloc.0
  IL_0e79:  ldc.i4     0xf93dc85c
  IL_0e7e:  bgt.un.s   IL_0e9b
  IL_0e80:  ldloc.0
  IL_0e81:  ldc.i4     0xf91ad389
  IL_0e86:  beq        IL_17e2
  IL_0e8b:  ldloc.0
  IL_0e8c:  ldc.i4     0xf93dc85c
  IL_0e91:  beq        IL_1cf8
  IL_0e96:  br         IL_2184
  IL_0e9b:  ldloc.0
  IL_0e9c:  ldc.i4     0xf93f63c6
  IL_0ea1:  beq        IL_13dd
  IL_0ea6:  ldloc.0
  IL_0ea7:  ldc.i4     0xf9c905c2
  IL_0eac:  beq        IL_2139
  IL_0eb1:  br         IL_2184
  IL_0eb6:  ldloc.0
  IL_0eb7:  ldc.i4     0xfafbe318
  IL_0ebc:  bgt.un.s   IL_0ed9
  IL_0ebe:  ldloc.0
  IL_0ebf:  ldc.i4     0xfa57fe02
  IL_0ec4:  beq        IL_1b7e
  IL_0ec9:  ldloc.0
  IL_0eca:  ldc.i4     0xfafbe318
  IL_0ecf:  beq        IL_14af
  IL_0ed4:  br         IL_2184
  IL_0ed9:  ldloc.0
  IL_0eda:  ldc.i4     0xfb42d85f
  IL_0edf:  beq        IL_1d76
  IL_0ee4:  ldloc.0
  IL_0ee5:  ldc.i4     0xff1d7ceb
  IL_0eea:  beq.s      IL_0f06
  IL_0eec:  br         IL_2184
  IL_0ef1:  ldarg.0
  IL_0ef2:  ldstr      "cddafs"
  IL_0ef7:  call       "bool string.op_Equality(string, string)"
  IL_0efc:  brtrue     IL_2166
  IL_0f01:  br         IL_2184
  IL_0f06:  ldarg.0
  IL_0f07:  ldstr      "cd9660"
  IL_0f0c:  call       "bool string.op_Equality(string, string)"
  IL_0f11:  brtrue     IL_2166
  IL_0f16:  br         IL_2184
  IL_0f1b:  ldarg.0
  IL_0f1c:  ldstr      "iso"
  IL_0f21:  call       "bool string.op_Equality(string, string)"
  IL_0f26:  brtrue     IL_2166
  IL_0f2b:  br         IL_2184
  IL_0f30:  ldarg.0
  IL_0f31:  ldstr      "isofs"
  IL_0f36:  call       "bool string.op_Equality(string, string)"
  IL_0f3b:  brtrue     IL_2166
  IL_0f40:  br         IL_2184
  IL_0f45:  ldarg.0
  IL_0f46:  ldstr      "iso9660"
  IL_0f4b:  call       "bool string.op_Equality(string, string)"
  IL_0f50:  brtrue     IL_2166
  IL_0f55:  br         IL_2184
  IL_0f5a:  ldarg.0
  IL_0f5b:  ldstr      "fuseiso"
  IL_0f60:  call       "bool string.op_Equality(string, string)"
  IL_0f65:  brtrue     IL_2166
  IL_0f6a:  br         IL_2184
  IL_0f6f:  ldarg.0
  IL_0f70:  ldstr      "fuseiso9660"
  IL_0f75:  call       "bool string.op_Equality(string, string)"
  IL_0f7a:  brtrue     IL_2166
  IL_0f7f:  br         IL_2184
  IL_0f84:  ldarg.0
  IL_0f85:  ldstr      "udf"
  IL_0f8a:  call       "bool string.op_Equality(string, string)"
  IL_0f8f:  brtrue     IL_2166
  IL_0f94:  br         IL_2184
  IL_0f99:  ldarg.0
  IL_0f9a:  ldstr      "umview-mod-umfuseiso9660"
  IL_0f9f:  call       "bool string.op_Equality(string, string)"
  IL_0fa4:  brtrue     IL_2166
  IL_0fa9:  br         IL_2184
  IL_0fae:  ldarg.0
  IL_0faf:  ldstr      "aafs"
  IL_0fb4:  call       "bool string.op_Equality(string, string)"
  IL_0fb9:  brtrue     IL_216c
  IL_0fbe:  br         IL_2184
  IL_0fc3:  ldarg.0
  IL_0fc4:  ldstr      "adfs"
  IL_0fc9:  call       "bool string.op_Equality(string, string)"
  IL_0fce:  brtrue     IL_216c
  IL_0fd3:  br         IL_2184
  IL_0fd8:  ldarg.0
  IL_0fd9:  ldstr      "affs"
  IL_0fde:  call       "bool string.op_Equality(string, string)"
  IL_0fe3:  brtrue     IL_216c
  IL_0fe8:  br         IL_2184
  IL_0fed:  ldarg.0
  IL_0fee:  ldstr      "anoninode"
  IL_0ff3:  call       "bool string.op_Equality(string, string)"
  IL_0ff8:  brtrue     IL_216c
  IL_0ffd:  br         IL_2184
  IL_1002:  ldarg.0
  IL_1003:  ldstr      "anon-inode FS"
  IL_1008:  call       "bool string.op_Equality(string, string)"
  IL_100d:  brtrue     IL_216c
  IL_1012:  br         IL_2184
  IL_1017:  ldarg.0
  IL_1018:  ldstr      "apfs"
  IL_101d:  call       "bool string.op_Equality(string, string)"
  IL_1022:  brtrue     IL_216c
  IL_1027:  br         IL_2184
  IL_102c:  ldarg.0
  IL_102d:  ldstr      "balloon-kvm-fs"
  IL_1032:  call       "bool string.op_Equality(string, string)"
  IL_1037:  brtrue     IL_216c
  IL_103c:  br         IL_2184
  IL_1041:  ldarg.0
  IL_1042:  ldstr      "bdevfs"
  IL_1047:  call       "bool string.op_Equality(string, string)"
  IL_104c:  brtrue     IL_216c
  IL_1051:  br         IL_2184
  IL_1056:  ldarg.0
  IL_1057:  ldstr      "befs"
  IL_105c:  call       "bool string.op_Equality(string, string)"
  IL_1061:  brtrue     IL_216c
  IL_1066:  br         IL_2184
  IL_106b:  ldarg.0
  IL_106c:  ldstr      "bfs"
  IL_1071:  call       "bool string.op_Equality(string, string)"
  IL_1076:  brtrue     IL_216c
  IL_107b:  br         IL_2184
  IL_1080:  ldarg.0
  IL_1081:  ldstr      "bootfs"
  IL_1086:  call       "bool string.op_Equality(string, string)"
  IL_108b:  brtrue     IL_216c
  IL_1090:  br         IL_2184
  IL_1095:  ldarg.0
  IL_1096:  ldstr      "bpf_fs"
  IL_109b:  call       "bool string.op_Equality(string, string)"
  IL_10a0:  brtrue     IL_216c
  IL_10a5:  br         IL_2184
  IL_10aa:  ldarg.0
  IL_10ab:  ldstr      "btrfs"
  IL_10b0:  call       "bool string.op_Equality(string, string)"
  IL_10b5:  brtrue     IL_216c
  IL_10ba:  br         IL_2184
  IL_10bf:  ldarg.0
  IL_10c0:  ldstr      "btrfs_test"
  IL_10c5:  call       "bool string.op_Equality(string, string)"
  IL_10ca:  brtrue     IL_216c
  IL_10cf:  br         IL_2184
  IL_10d4:  ldarg.0
  IL_10d5:  ldstr      "coh"
  IL_10da:  call       "bool string.op_Equality(string, string)"
  IL_10df:  brtrue     IL_216c
  IL_10e4:  br         IL_2184
  IL_10e9:  ldarg.0
  IL_10ea:  ldstr      "daxfs"
  IL_10ef:  call       "bool string.op_Equality(string, string)"
  IL_10f4:  brtrue     IL_216c
  IL_10f9:  br         IL_2184
  IL_10fe:  ldarg.0
  IL_10ff:  ldstr      "drvfs"
  IL_1104:  call       "bool string.op_Equality(string, string)"
  IL_1109:  brtrue     IL_216c
  IL_110e:  br         IL_2184
  IL_1113:  ldarg.0
  IL_1114:  ldstr      "efivarfs"
  IL_1119:  call       "bool string.op_Equality(string, string)"
  IL_111e:  brtrue     IL_216c
  IL_1123:  br         IL_2184
  IL_1128:  ldarg.0
  IL_1129:  ldstr      "efs"
  IL_112e:  call       "bool string.op_Equality(string, string)"
  IL_1133:  brtrue     IL_216c
  IL_1138:  br         IL_2184
  IL_113d:  ldarg.0
  IL_113e:  ldstr      "exfat"
  IL_1143:  call       "bool string.op_Equality(string, string)"
  IL_1148:  brtrue     IL_216c
  IL_114d:  br         IL_2184
  IL_1152:  ldarg.0
  IL_1153:  ldstr      "exofs"
  IL_1158:  call       "bool string.op_Equality(string, string)"
  IL_115d:  brtrue     IL_216c
  IL_1162:  br         IL_2184
  IL_1167:  ldarg.0
  IL_1168:  ldstr      "ext"
  IL_116d:  call       "bool string.op_Equality(string, string)"
  IL_1172:  brtrue     IL_216c
  IL_1177:  br         IL_2184
  IL_117c:  ldarg.0
  IL_117d:  ldstr      "ext2"
  IL_1182:  call       "bool string.op_Equality(string, string)"
  IL_1187:  brtrue     IL_216c
  IL_118c:  br         IL_2184
  IL_1191:  ldarg.0
  IL_1192:  ldstr      "ext2_old"
  IL_1197:  call       "bool string.op_Equality(string, string)"
  IL_119c:  brtrue     IL_216c
  IL_11a1:  br         IL_2184
  IL_11a6:  ldarg.0
  IL_11a7:  ldstr      "ext3"
  IL_11ac:  call       "bool string.op_Equality(string, string)"
  IL_11b1:  brtrue     IL_216c
  IL_11b6:  br         IL_2184
  IL_11bb:  ldarg.0
  IL_11bc:  ldstr      "ext2/ext3"
  IL_11c1:  call       "bool string.op_Equality(string, string)"
  IL_11c6:  brtrue     IL_216c
  IL_11cb:  br         IL_2184
  IL_11d0:  ldarg.0
  IL_11d1:  ldstr      "ext4"
  IL_11d6:  call       "bool string.op_Equality(string, string)"
  IL_11db:  brtrue     IL_216c
  IL_11e0:  br         IL_2184
  IL_11e5:  ldarg.0
  IL_11e6:  ldstr      "ext4dev"
  IL_11eb:  call       "bool string.op_Equality(string, string)"
  IL_11f0:  brtrue     IL_216c
  IL_11f5:  br         IL_2184
  IL_11fa:  ldarg.0
  IL_11fb:  ldstr      "f2fs"
  IL_1200:  call       "bool string.op_Equality(string, string)"
  IL_1205:  brtrue     IL_216c
  IL_120a:  br         IL_2184
  IL_120f:  ldarg.0
  IL_1210:  ldstr      "fat"
  IL_1215:  call       "bool string.op_Equality(string, string)"
  IL_121a:  brtrue     IL_216c
  IL_121f:  br         IL_2184
  IL_1224:  ldarg.0
  IL_1225:  ldstr      "fuseext2"
  IL_122a:  call       "bool string.op_Equality(string, string)"
  IL_122f:  brtrue     IL_216c
  IL_1234:  br         IL_2184
  IL_1239:  ldarg.0
  IL_123a:  ldstr      "fusefat"
  IL_123f:  call       "bool string.op_Equality(string, string)"
  IL_1244:  brtrue     IL_216c
  IL_1249:  br         IL_2184
  IL_124e:  ldarg.0
  IL_124f:  ldstr      "hfs"
  IL_1254:  call       "bool string.op_Equality(string, string)"
  IL_1259:  brtrue     IL_216c
  IL_125e:  br         IL_2184
  IL_1263:  ldarg.0
  IL_1264:  ldstr      "hfs+"
  IL_1269:  call       "bool string.op_Equality(string, string)"
  IL_126e:  brtrue     IL_216c
  IL_1273:  br         IL_2184
  IL_1278:  ldarg.0
  IL_1279:  ldstr      "hfsplus"
  IL_127e:  call       "bool string.op_Equality(string, string)"
  IL_1283:  brtrue     IL_216c
  IL_1288:  br         IL_2184
  IL_128d:  ldarg.0
  IL_128e:  ldstr      "hfsx"
  IL_1293:  call       "bool string.op_Equality(string, string)"
  IL_1298:  brtrue     IL_216c
  IL_129d:  br         IL_2184
  IL_12a2:  ldarg.0
  IL_12a3:  ldstr      "hostfs"
  IL_12a8:  call       "bool string.op_Equality(string, string)"
  IL_12ad:  brtrue     IL_216c
  IL_12b2:  br         IL_2184
  IL_12b7:  ldarg.0
  IL_12b8:  ldstr      "hpfs"
  IL_12bd:  call       "bool string.op_Equality(string, string)"
  IL_12c2:  brtrue     IL_216c
  IL_12c7:  br         IL_2184
  IL_12cc:  ldarg.0
  IL_12cd:  ldstr      "inodefs"
  IL_12d2:  call       "bool string.op_Equality(string, string)"
  IL_12d7:  brtrue     IL_216c
  IL_12dc:  br         IL_2184
  IL_12e1:  ldarg.0
  IL_12e2:  ldstr      "inotifyfs"
  IL_12e7:  call       "bool string.op_Equality(string, string)"
  IL_12ec:  brtrue     IL_216c
  IL_12f1:  br         IL_2184
  IL_12f6:  ldarg.0
  IL_12f7:  ldstr      "jbd"
  IL_12fc:  call       "bool string.op_Equality(string, string)"
  IL_1301:  brtrue     IL_216c
  IL_1306:  br         IL_2184
  IL_130b:  ldarg.0
  IL_130c:  ldstr      "jbd2"
  IL_1311:  call       "bool string.op_Equality(string, string)"
  IL_1316:  brtrue     IL_216c
  IL_131b:  br         IL_2184
  IL_1320:  ldarg.0
  IL_1321:  ldstr      "jffs"
  IL_1326:  call       "bool string.op_Equality(string, string)"
  IL_132b:  brtrue     IL_216c
  IL_1330:  br         IL_2184
  IL_1335:  ldarg.0
  IL_1336:  ldstr      "jffs2"
  IL_133b:  call       "bool string.op_Equality(string, string)"
  IL_1340:  brtrue     IL_216c
  IL_1345:  br         IL_2184
  IL_134a:  ldarg.0
  IL_134b:  ldstr      "jfs"
  IL_1350:  call       "bool string.op_Equality(string, string)"
  IL_1355:  brtrue     IL_216c
  IL_135a:  br         IL_2184
  IL_135f:  ldarg.0
  IL_1360:  ldstr      "lofs"
  IL_1365:  call       "bool string.op_Equality(string, string)"
  IL_136a:  brtrue     IL_216c
  IL_136f:  br         IL_2184
  IL_1374:  ldarg.0
  IL_1375:  ldstr      "logfs"
  IL_137a:  call       "bool string.op_Equality(string, string)"
  IL_137f:  brtrue     IL_216c
  IL_1384:  br         IL_2184
  IL_1389:  ldarg.0
  IL_138a:  ldstr      "lxfs"
  IL_138f:  call       "bool string.op_Equality(string, string)"
  IL_1394:  brtrue     IL_216c
  IL_1399:  br         IL_2184
  IL_139e:  ldarg.0
  IL_139f:  ldstr      "minix (30 char.)"
  IL_13a4:  call       "bool string.op_Equality(string, string)"
  IL_13a9:  brtrue     IL_216c
  IL_13ae:  br         IL_2184
  IL_13b3:  ldarg.0
  IL_13b4:  ldstr      "minix v2 (30 char.)"
  IL_13b9:  call       "bool string.op_Equality(string, string)"
  IL_13be:  brtrue     IL_216c
  IL_13c3:  br         IL_2184
  IL_13c8:  ldarg.0
  IL_13c9:  ldstr      "minix v2"
  IL_13ce:  call       "bool string.op_Equality(string, string)"
  IL_13d3:  brtrue     IL_216c
  IL_13d8:  br         IL_2184
  IL_13dd:  ldarg.0
  IL_13de:  ldstr      "minix"
  IL_13e3:  call       "bool string.op_Equality(string, string)"
  IL_13e8:  brtrue     IL_216c
  IL_13ed:  br         IL_2184
  IL_13f2:  ldarg.0
  IL_13f3:  ldstr      "minix_old"
  IL_13f8:  call       "bool string.op_Equality(string, string)"
  IL_13fd:  brtrue     IL_216c
  IL_1402:  br         IL_2184
  IL_1407:  ldarg.0
  IL_1408:  ldstr      "minix2"
  IL_140d:  call       "bool string.op_Equality(string, string)"
  IL_1412:  brtrue     IL_216c
  IL_1417:  br         IL_2184
  IL_141c:  ldarg.0
  IL_141d:  ldstr      "minix2v2"
  IL_1422:  call       "bool string.op_Equality(string, string)"
  IL_1427:  brtrue     IL_216c
  IL_142c:  br         IL_2184
  IL_1431:  ldarg.0
  IL_1432:  ldstr      "minix2 v2"
  IL_1437:  call       "bool string.op_Equality(string, string)"
  IL_143c:  brtrue     IL_216c
  IL_1441:  br         IL_2184
  IL_1446:  ldarg.0
  IL_1447:  ldstr      "minix3"
  IL_144c:  call       "bool string.op_Equality(string, string)"
  IL_1451:  brtrue     IL_216c
  IL_1456:  br         IL_2184
  IL_145b:  ldarg.0
  IL_145c:  ldstr      "mlfs"
  IL_1461:  call       "bool string.op_Equality(string, string)"
  IL_1466:  brtrue     IL_216c
  IL_146b:  br         IL_2184
  IL_1470:  ldarg.0
  IL_1471:  ldstr      "msdos"
  IL_1476:  call       "bool string.op_Equality(string, string)"
  IL_147b:  brtrue     IL_216c
  IL_1480:  br         IL_2184
  IL_1485:  ldarg.0
  IL_1486:  ldstr      "nilfs"
  IL_148b:  call       "bool string.op_Equality(string, string)"
  IL_1490:  brtrue     IL_216c
  IL_1495:  br         IL_2184
  IL_149a:  ldarg.0
  IL_149b:  ldstr      "nsfs"
  IL_14a0:  call       "bool string.op_Equality(string, string)"
  IL_14a5:  brtrue     IL_216c
  IL_14aa:  br         IL_2184
  IL_14af:  ldarg.0
  IL_14b0:  ldstr      "ntfs"
  IL_14b5:  call       "bool string.op_Equality(string, string)"
  IL_14ba:  brtrue     IL_216c
  IL_14bf:  br         IL_2184
  IL_14c4:  ldarg.0
  IL_14c5:  ldstr      "ntfs-3g"
  IL_14ca:  call       "bool string.op_Equality(string, string)"
  IL_14cf:  brtrue     IL_216c
  IL_14d4:  br         IL_2184
  IL_14d9:  ldarg.0
  IL_14da:  ldstr      "ocfs2"
  IL_14df:  call       "bool string.op_Equality(string, string)"
  IL_14e4:  brtrue     IL_216c
  IL_14e9:  br         IL_2184
  IL_14ee:  ldarg.0
  IL_14ef:  ldstr      "omfs"
  IL_14f4:  call       "bool string.op_Equality(string, string)"
  IL_14f9:  brtrue     IL_216c
  IL_14fe:  br         IL_2184
  IL_1503:  ldarg.0
  IL_1504:  ldstr      "overlay"
  IL_1509:  call       "bool string.op_Equality(string, string)"
  IL_150e:  brtrue     IL_216c
  IL_1513:  br         IL_2184
  IL_1518:  ldarg.0
  IL_1519:  ldstr      "overlayfs"
  IL_151e:  call       "bool string.op_Equality(string, string)"
  IL_1523:  brtrue     IL_216c
  IL_1528:  br         IL_2184
  IL_152d:  ldarg.0
  IL_152e:  ldstr      "pstorefs"
  IL_1533:  call       "bool string.op_Equality(string, string)"
  IL_1538:  brtrue     IL_216c
  IL_153d:  br         IL_2184
  IL_1542:  ldarg.0
  IL_1543:  ldstr      "qnx4"
  IL_1548:  call       "bool string.op_Equality(string, string)"
  IL_154d:  brtrue     IL_216c
  IL_1552:  br         IL_2184
  IL_1557:  ldarg.0
  IL_1558:  ldstr      "qnx6"
  IL_155d:  call       "bool string.op_Equality(string, string)"
  IL_1562:  brtrue     IL_216c
  IL_1567:  br         IL_2184
  IL_156c:  ldarg.0
  IL_156d:  ldstr      "reiserfs"
  IL_1572:  call       "bool string.op_Equality(string, string)"
  IL_1577:  brtrue     IL_216c
  IL_157c:  br         IL_2184
  IL_1581:  ldarg.0
  IL_1582:  ldstr      "rpc_pipefs"
  IL_1587:  call       "bool string.op_Equality(string, string)"
  IL_158c:  brtrue     IL_216c
  IL_1591:  br         IL_2184
  IL_1596:  ldarg.0
  IL_1597:  ldstr      "sffs"
  IL_159c:  call       "bool string.op_Equality(string, string)"
  IL_15a1:  brtrue     IL_216c
  IL_15a6:  br         IL_2184
  IL_15ab:  ldarg.0
  IL_15ac:  ldstr      "smackfs"
  IL_15b1:  call       "bool string.op_Equality(string, string)"
  IL_15b6:  brtrue     IL_216c
  IL_15bb:  br         IL_2184
  IL_15c0:  ldarg.0
  IL_15c1:  ldstr      "squashfs"
  IL_15c6:  call       "bool string.op_Equality(string, string)"
  IL_15cb:  brtrue     IL_216c
  IL_15d0:  br         IL_2184
  IL_15d5:  ldarg.0
  IL_15d6:  ldstr      "swap"
  IL_15db:  call       "bool string.op_Equality(string, string)"
  IL_15e0:  brtrue     IL_216c
  IL_15e5:  br         IL_2184
  IL_15ea:  ldarg.0
  IL_15eb:  ldstr      "sysv"
  IL_15f0:  call       "bool string.op_Equality(string, string)"
  IL_15f5:  brtrue     IL_216c
  IL_15fa:  br         IL_2184
  IL_15ff:  ldarg.0
  IL_1600:  ldstr      "sysv2"
  IL_1605:  call       "bool string.op_Equality(string, string)"
  IL_160a:  brtrue     IL_216c
  IL_160f:  br         IL_2184
  IL_1614:  ldarg.0
  IL_1615:  ldstr      "sysv4"
  IL_161a:  call       "bool string.op_Equality(string, string)"
  IL_161f:  brtrue     IL_216c
  IL_1624:  br         IL_2184
  IL_1629:  ldarg.0
  IL_162a:  ldstr      "tracefs"
  IL_162f:  call       "bool string.op_Equality(string, string)"
  IL_1634:  brtrue     IL_216c
  IL_1639:  br         IL_2184
  IL_163e:  ldarg.0
  IL_163f:  ldstr      "ubifs"
  IL_1644:  call       "bool string.op_Equality(string, string)"
  IL_1649:  brtrue     IL_216c
  IL_164e:  br         IL_2184
  IL_1653:  ldarg.0
  IL_1654:  ldstr      "ufs"
  IL_1659:  call       "bool string.op_Equality(string, string)"
  IL_165e:  brtrue     IL_216c
  IL_1663:  br         IL_2184
  IL_1668:  ldarg.0
  IL_1669:  ldstr      "ufscigam"
  IL_166e:  call       "bool string.op_Equality(string, string)"
  IL_1673:  brtrue     IL_216c
  IL_1678:  br         IL_2184
  IL_167d:  ldarg.0
  IL_167e:  ldstr      "ufs2"
  IL_1683:  call       "bool string.op_Equality(string, string)"
  IL_1688:  brtrue     IL_216c
  IL_168d:  br         IL_2184
  IL_1692:  ldarg.0
  IL_1693:  ldstr      "umsdos"
  IL_1698:  call       "bool string.op_Equality(string, string)"
  IL_169d:  brtrue     IL_216c
  IL_16a2:  br         IL_2184
  IL_16a7:  ldarg.0
  IL_16a8:  ldstr      "umview-mod-umfuseext2"
  IL_16ad:  call       "bool string.op_Equality(string, string)"
  IL_16b2:  brtrue     IL_216c
  IL_16b7:  br         IL_2184
  IL_16bc:  ldarg.0
  IL_16bd:  ldstr      "v9fs"
  IL_16c2:  call       "bool string.op_Equality(string, string)"
  IL_16c7:  brtrue     IL_216c
  IL_16cc:  br         IL_2184
  IL_16d1:  ldarg.0
  IL_16d2:  ldstr      "vagrant"
  IL_16d7:  call       "bool string.op_Equality(string, string)"
  IL_16dc:  brtrue     IL_216c
  IL_16e1:  br         IL_2184
  IL_16e6:  ldarg.0
  IL_16e7:  ldstr      "vboxfs"
  IL_16ec:  call       "bool string.op_Equality(string, string)"
  IL_16f1:  brtrue     IL_216c
  IL_16f6:  br         IL_2184
  IL_16fb:  ldarg.0
  IL_16fc:  ldstr      "vxfs"
  IL_1701:  call       "bool string.op_Equality(string, string)"
  IL_1706:  brtrue     IL_216c
  IL_170b:  br         IL_2184
  IL_1710:  ldarg.0
  IL_1711:  ldstr      "vxfs_olt"
  IL_1716:  call       "bool string.op_Equality(string, string)"
  IL_171b:  brtrue     IL_216c
  IL_1720:  br         IL_2184
  IL_1725:  ldarg.0
  IL_1726:  ldstr      "vzfs"
  IL_172b:  call       "bool string.op_Equality(string, string)"
  IL_1730:  brtrue     IL_216c
  IL_1735:  br         IL_2184
  IL_173a:  ldarg.0
  IL_173b:  ldstr      "wslfs"
  IL_1740:  call       "bool string.op_Equality(string, string)"
  IL_1745:  brtrue     IL_216c
  IL_174a:  br         IL_2184
  IL_174f:  ldarg.0
  IL_1750:  ldstr      "xenix"
  IL_1755:  call       "bool string.op_Equality(string, string)"
  IL_175a:  brtrue     IL_216c
  IL_175f:  br         IL_2184
  IL_1764:  ldarg.0
  IL_1765:  ldstr      "xfs"
  IL_176a:  call       "bool string.op_Equality(string, string)"
  IL_176f:  brtrue     IL_216c
  IL_1774:  br         IL_2184
  IL_1779:  ldarg.0
  IL_177a:  ldstr      "xia"
  IL_177f:  call       "bool string.op_Equality(string, string)"
  IL_1784:  brtrue     IL_216c
  IL_1789:  br         IL_2184
  IL_178e:  ldarg.0
  IL_178f:  ldstr      "xiafs"
  IL_1794:  call       "bool string.op_Equality(string, string)"
  IL_1799:  brtrue     IL_216c
  IL_179e:  br         IL_2184
  IL_17a3:  ldarg.0
  IL_17a4:  ldstr      "xmount"
  IL_17a9:  call       "bool string.op_Equality(string, string)"
  IL_17ae:  brtrue     IL_216c
  IL_17b3:  br         IL_2184
  IL_17b8:  ldarg.0
  IL_17b9:  ldstr      "zfs"
  IL_17be:  call       "bool string.op_Equality(string, string)"
  IL_17c3:  brtrue     IL_216c
  IL_17c8:  br         IL_2184
  IL_17cd:  ldarg.0
  IL_17ce:  ldstr      "zfs-fuse"
  IL_17d3:  call       "bool string.op_Equality(string, string)"
  IL_17d8:  brtrue     IL_216c
  IL_17dd:  br         IL_2184
  IL_17e2:  ldarg.0
  IL_17e3:  ldstr      "zsmallocfs"
  IL_17e8:  call       "bool string.op_Equality(string, string)"
  IL_17ed:  brtrue     IL_216c
  IL_17f2:  br         IL_2184
  IL_17f7:  ldarg.0
  IL_17f8:  ldstr      "9p"
  IL_17fd:  call       "bool string.op_Equality(string, string)"
  IL_1802:  brtrue     IL_2172
  IL_1807:  br         IL_2184
  IL_180c:  ldarg.0
  IL_180d:  ldstr      "acfs"
  IL_1812:  call       "bool string.op_Equality(string, string)"
  IL_1817:  brtrue     IL_2172
  IL_181c:  br         IL_2184
  IL_1821:  ldarg.0
  IL_1822:  ldstr      "afp"
  IL_1827:  call       "bool string.op_Equality(string, string)"
  IL_182c:  brtrue     IL_2172
  IL_1831:  br         IL_2184
  IL_1836:  ldarg.0
  IL_1837:  ldstr      "afpfs"
  IL_183c:  call       "bool string.op_Equality(string, string)"
  IL_1841:  brtrue     IL_2172
  IL_1846:  br         IL_2184
  IL_184b:  ldarg.0
  IL_184c:  ldstr      "afs"
  IL_1851:  call       "bool string.op_Equality(string, string)"
  IL_1856:  brtrue     IL_2172
  IL_185b:  br         IL_2184
  IL_1860:  ldarg.0
  IL_1861:  ldstr      "aufs"
  IL_1866:  call       "bool string.op_Equality(string, string)"
  IL_186b:  brtrue     IL_2172
  IL_1870:  br         IL_2184
  IL_1875:  ldarg.0
  IL_1876:  ldstr      "autofs"
  IL_187b:  call       "bool string.op_Equality(string, string)"
  IL_1880:  brtrue     IL_2172
  IL_1885:  br         IL_2184
  IL_188a:  ldarg.0
  IL_188b:  ldstr      "autofs4"
  IL_1890:  call       "bool string.op_Equality(string, string)"
  IL_1895:  brtrue     IL_2172
  IL_189a:  br         IL_2184
  IL_189f:  ldarg.0
  IL_18a0:  ldstr      "beaglefs"
  IL_18a5:  call       "bool string.op_Equality(string, string)"
  IL_18aa:  brtrue     IL_2172
  IL_18af:  br         IL_2184
  IL_18b4:  ldarg.0
  IL_18b5:  ldstr      "ceph"
  IL_18ba:  call       "bool string.op_Equality(string, string)"
  IL_18bf:  brtrue     IL_2172
  IL_18c4:  br         IL_2184
  IL_18c9:  ldarg.0
  IL_18ca:  ldstr      "cifs"
  IL_18cf:  call       "bool string.op_Equality(string, string)"
  IL_18d4:  brtrue     IL_2172
  IL_18d9:  br         IL_2184
  IL_18de:  ldarg.0
  IL_18df:  ldstr      "coda"
  IL_18e4:  call       "bool string.op_Equality(string, string)"
  IL_18e9:  brtrue     IL_2172
  IL_18ee:  br         IL_2184
  IL_18f3:  ldarg.0
  IL_18f4:  ldstr      "coherent"
  IL_18f9:  call       "bool string.op_Equality(string, string)"
  IL_18fe:  brtrue     IL_2172
  IL_1903:  br         IL_2184
  IL_1908:  ldarg.0
  IL_1909:  ldstr      "curlftpfs"
  IL_190e:  call       "bool string.op_Equality(string, string)"
  IL_1913:  brtrue     IL_2172
  IL_1918:  br         IL_2184
  IL_191d:  ldarg.0
  IL_191e:  ldstr      "davfs2"
  IL_1923:  call       "bool string.op_Equality(string, string)"
  IL_1928:  brtrue     IL_2172
  IL_192d:  br         IL_2184
  IL_1932:  ldarg.0
  IL_1933:  ldstr      "dlm"
  IL_1938:  call       "bool string.op_Equality(string, string)"
  IL_193d:  brtrue     IL_2172
  IL_1942:  br         IL_2184
  IL_1947:  ldarg.0
  IL_1948:  ldstr      "ecryptfs"
  IL_194d:  call       "bool string.op_Equality(string, string)"
  IL_1952:  brtrue     IL_2172
  IL_1957:  br         IL_2184
  IL_195c:  ldarg.0
  IL_195d:  ldstr      "eCryptfs"
  IL_1962:  call       "bool string.op_Equality(string, string)"
  IL_1967:  brtrue     IL_2172
  IL_196c:  br         IL_2184
  IL_1971:  ldarg.0
  IL_1972:  ldstr      "fhgfs"
  IL_1977:  call       "bool string.op_Equality(string, string)"
  IL_197c:  brtrue     IL_2172
  IL_1981:  br         IL_2184
  IL_1986:  ldarg.0
  IL_1987:  ldstr      "flickrfs"
  IL_198c:  call       "bool string.op_Equality(string, string)"
  IL_1991:  brtrue     IL_2172
  IL_1996:  br         IL_2184
  IL_199b:  ldarg.0
  IL_199c:  ldstr      "ftp"
  IL_19a1:  call       "bool string.op_Equality(string, string)"
  IL_19a6:  brtrue     IL_2172
  IL_19ab:  br         IL_2184
  IL_19b0:  ldarg.0
  IL_19b1:  ldstr      "fuse"
  IL_19b6:  call       "bool string.op_Equality(string, string)"
  IL_19bb:  brtrue     IL_2172
  IL_19c0:  br         IL_2184
  IL_19c5:  ldarg.0
  IL_19c6:  ldstr      "fuseblk"
  IL_19cb:  call       "bool string.op_Equality(string, string)"
  IL_19d0:  brtrue     IL_2172
  IL_19d5:  br         IL_2184
  IL_19da:  ldarg.0
  IL_19db:  ldstr      "fusedav"
  IL_19e0:  call       "bool string.op_Equality(string, string)"
  IL_19e5:  brtrue     IL_2172
  IL_19ea:  br         IL_2184
  IL_19ef:  ldarg.0
  IL_19f0:  ldstr      "fusesmb"
  IL_19f5:  call       "bool string.op_Equality(string, string)"
  IL_19fa:  brtrue     IL_2172
  IL_19ff:  br         IL_2184
  IL_1a04:  ldarg.0
  IL_1a05:  ldstr      "gfsgfs2"
  IL_1a0a:  call       "bool string.op_Equality(string, string)"
  IL_1a0f:  brtrue     IL_2172
  IL_1a14:  br         IL_2184
  IL_1a19:  ldarg.0
  IL_1a1a:  ldstr      "gfs/gfs2"
  IL_1a1f:  call       "bool string.op_Equality(string, string)"
  IL_1a24:  brtrue     IL_2172
  IL_1a29:  br         IL_2184
  IL_1a2e:  ldarg.0
  IL_1a2f:  ldstr      "gfs2"
  IL_1a34:  call       "bool string.op_Equality(string, string)"
  IL_1a39:  brtrue     IL_2172
  IL_1a3e:  br         IL_2184
  IL_1a43:  ldarg.0
  IL_1a44:  ldstr      "glusterfs-client"
  IL_1a49:  call       "bool string.op_Equality(string, string)"
  IL_1a4e:  brtrue     IL_2172
  IL_1a53:  br         IL_2184
  IL_1a58:  ldarg.0
  IL_1a59:  ldstr      "gmailfs"
  IL_1a5e:  call       "bool string.op_Equality(string, string)"
  IL_1a63:  brtrue     IL_2172
  IL_1a68:  br         IL_2184
  IL_1a6d:  ldarg.0
  IL_1a6e:  ldstr      "gpfs"
  IL_1a73:  call       "bool string.op_Equality(string, string)"
  IL_1a78:  brtrue     IL_2172
  IL_1a7d:  br         IL_2184
  IL_1a82:  ldarg.0
  IL_1a83:  ldstr      "ibrix"
  IL_1a88:  call       "bool string.op_Equality(string, string)"
  IL_1a8d:  brtrue     IL_2172
  IL_1a92:  br         IL_2184
  IL_1a97:  ldarg.0
  IL_1a98:  ldstr      "k-afs"
  IL_1a9d:  call       "bool string.op_Equality(string, string)"
  IL_1aa2:  brtrue     IL_2172
  IL_1aa7:  br         IL_2184
  IL_1aac:  ldarg.0
  IL_1aad:  ldstr      "kafs"
  IL_1ab2:  call       "bool string.op_Equality(string, string)"
  IL_1ab7:  brtrue     IL_2172
  IL_1abc:  br         IL_2184
  IL_1ac1:  ldarg.0
  IL_1ac2:  ldstr      "kbfuse"
  IL_1ac7:  call       "bool string.op_Equality(string, string)"
  IL_1acc:  brtrue     IL_2172
  IL_1ad1:  br         IL_2184
  IL_1ad6:  ldarg.0
  IL_1ad7:  ldstr      "ltspfs"
  IL_1adc:  call       "bool string.op_Equality(string, string)"
  IL_1ae1:  brtrue     IL_2172
  IL_1ae6:  br         IL_2184
  IL_1aeb:  ldarg.0
  IL_1aec:  ldstr      "lustre"
  IL_1af1:  call       "bool string.op_Equality(string, string)"
  IL_1af6:  brtrue     IL_2172
  IL_1afb:  br         IL_2184
  IL_1b00:  ldarg.0
  IL_1b01:  ldstr      "ncp"
  IL_1b06:  call       "bool string.op_Equality(string, string)"
  IL_1b0b:  brtrue     IL_2172
  IL_1b10:  br         IL_2184
  IL_1b15:  ldarg.0
  IL_1b16:  ldstr      "ncpfs"
  IL_1b1b:  call       "bool string.op_Equality(string, string)"
  IL_1b20:  brtrue     IL_2172
  IL_1b25:  br         IL_2184
  IL_1b2a:  ldarg.0
  IL_1b2b:  ldstr      "nfs"
  IL_1b30:  call       "bool string.op_Equality(string, string)"
  IL_1b35:  brtrue     IL_2172
  IL_1b3a:  br         IL_2184
  IL_1b3f:  ldarg.0
  IL_1b40:  ldstr      "nfs4"
  IL_1b45:  call       "bool string.op_Equality(string, string)"
  IL_1b4a:  brtrue     IL_2172
  IL_1b4f:  br         IL_2184
  IL_1b54:  ldarg.0
  IL_1b55:  ldstr      "nfsd"
  IL_1b5a:  call       "bool string.op_Equality(string, string)"
  IL_1b5f:  brtrue     IL_2172
  IL_1b64:  br         IL_2184
  IL_1b69:  ldarg.0
  IL_1b6a:  ldstr      "novell"
  IL_1b6f:  call       "bool string.op_Equality(string, string)"
  IL_1b74:  brtrue     IL_2172
  IL_1b79:  br         IL_2184
  IL_1b7e:  ldarg.0
  IL_1b7f:  ldstr      "obexfs"
  IL_1b84:  call       "bool string.op_Equality(string, string)"
  IL_1b89:  brtrue     IL_2172
  IL_1b8e:  br         IL_2184
  IL_1b93:  ldarg.0
  IL_1b94:  ldstr      "panfs"
  IL_1b99:  call       "bool string.op_Equality(string, string)"
  IL_1b9e:  brtrue     IL_2172
  IL_1ba3:  br         IL_2184
  IL_1ba8:  ldarg.0
  IL_1ba9:  ldstr      "prl_fs"
  IL_1bae:  call       "bool string.op_Equality(string, string)"
  IL_1bb3:  brtrue     IL_2172
  IL_1bb8:  br         IL_2184
  IL_1bbd:  ldarg.0
  IL_1bbe:  ldstr      "s3ql"
  IL_1bc3:  call       "bool string.op_Equality(string, string)"
  IL_1bc8:  brtrue     IL_2172
  IL_1bcd:  br         IL_2184
  IL_1bd2:  ldarg.0
  IL_1bd3:  ldstr      "samba"
  IL_1bd8:  call       "bool string.op_Equality(string, string)"
  IL_1bdd:  brtrue     IL_2172
  IL_1be2:  br         IL_2184
  IL_1be7:  ldarg.0
  IL_1be8:  ldstr      "smb"
  IL_1bed:  call       "bool string.op_Equality(string, string)"
  IL_1bf2:  brtrue     IL_2172
  IL_1bf7:  br         IL_2184
  IL_1bfc:  ldarg.0
  IL_1bfd:  ldstr      "smb2"
  IL_1c02:  call       "bool string.op_Equality(string, string)"
  IL_1c07:  brtrue     IL_2172
  IL_1c0c:  br         IL_2184
  IL_1c11:  ldarg.0
  IL_1c12:  ldstr      "smbfs"
  IL_1c17:  call       "bool string.op_Equality(string, string)"
  IL_1c1c:  brtrue     IL_2172
  IL_1c21:  br         IL_2184
  IL_1c26:  ldarg.0
  IL_1c27:  ldstr      "snfs"
  IL_1c2c:  call       "bool string.op_Equality(string, string)"
  IL_1c31:  brtrue     IL_2172
  IL_1c36:  br         IL_2184
  IL_1c3b:  ldarg.0
  IL_1c3c:  ldstr      "sshfs"
  IL_1c41:  call       "bool string.op_Equality(string, string)"
  IL_1c46:  brtrue     IL_2172
  IL_1c4b:  br         IL_2184
  IL_1c50:  ldarg.0
  IL_1c51:  ldstr      "vmhgfs"
  IL_1c56:  call       "bool string.op_Equality(string, string)"
  IL_1c5b:  brtrue     IL_2172
  IL_1c60:  br         IL_2184
  IL_1c65:  ldarg.0
  IL_1c66:  ldstr      "webdav"
  IL_1c6b:  call       "bool string.op_Equality(string, string)"
  IL_1c70:  brtrue     IL_2172
  IL_1c75:  br         IL_2184
  IL_1c7a:  ldarg.0
  IL_1c7b:  ldstr      "wikipediafs"
  IL_1c80:  call       "bool string.op_Equality(string, string)"
  IL_1c85:  brtrue     IL_2172
  IL_1c8a:  br         IL_2184
  IL_1c8f:  ldarg.0
  IL_1c90:  ldstr      "xenfs"
  IL_1c95:  call       "bool string.op_Equality(string, string)"
  IL_1c9a:  brtrue     IL_2172
  IL_1c9f:  br         IL_2184
  IL_1ca4:  ldarg.0
  IL_1ca5:  ldstr      "anon_inode"
  IL_1caa:  call       "bool string.op_Equality(string, string)"
  IL_1caf:  brtrue     IL_2178
  IL_1cb4:  br         IL_2184
  IL_1cb9:  ldarg.0
  IL_1cba:  ldstr      "anon_inodefs"
  IL_1cbf:  call       "bool string.op_Equality(string, string)"
  IL_1cc4:  brtrue     IL_2178
  IL_1cc9:  br         IL_2184
  IL_1cce:  ldarg.0
  IL_1ccf:  ldstr      "aptfs"
  IL_1cd4:  call       "bool string.op_Equality(string, string)"
  IL_1cd9:  brtrue     IL_2178
  IL_1cde:  br         IL_2184
  IL_1ce3:  ldarg.0
  IL_1ce4:  ldstr      "avfs"
  IL_1ce9:  call       "bool string.op_Equality(string, string)"
  IL_1cee:  brtrue     IL_2178
  IL_1cf3:  br         IL_2184
  IL_1cf8:  ldarg.0
  IL_1cf9:  ldstr      "bdev"
  IL_1cfe:  call       "bool string.op_Equality(string, string)"
  IL_1d03:  brtrue     IL_2178
  IL_1d08:  br         IL_2184
  IL_1d0d:  ldarg.0
  IL_1d0e:  ldstr      "binfmt_misc"
  IL_1d13:  call       "bool string.op_Equality(string, string)"
  IL_1d18:  brtrue     IL_2178
  IL_1d1d:  br         IL_2184
  IL_1d22:  ldarg.0
  IL_1d23:  ldstr      "cgroup"
  IL_1d28:  call       "bool string.op_Equality(string, string)"
  IL_1d2d:  brtrue     IL_2178
  IL_1d32:  br         IL_2184
  IL_1d37:  ldarg.0
  IL_1d38:  ldstr      "cgroupfs"
  IL_1d3d:  call       "bool string.op_Equality(string, string)"
  IL_1d42:  brtrue     IL_2178
  IL_1d47:  br         IL_2184
  IL_1d4c:  ldarg.0
  IL_1d4d:  ldstr      "cgroup2fs"
  IL_1d52:  call       "bool string.op_Equality(string, string)"
  IL_1d57:  brtrue     IL_2178
  IL_1d5c:  br         IL_2184
  IL_1d61:  ldarg.0
  IL_1d62:  ldstr      "configfs"
  IL_1d67:  call       "bool string.op_Equality(string, string)"
  IL_1d6c:  brtrue     IL_2178
  IL_1d71:  br         IL_2184
  IL_1d76:  ldarg.0
  IL_1d77:  ldstr      "cpuset"
  IL_1d7c:  call       "bool string.op_Equality(string, string)"
  IL_1d81:  brtrue     IL_2178
  IL_1d86:  br         IL_2184
  IL_1d8b:  ldarg.0
  IL_1d8c:  ldstr      "cramfs"
  IL_1d91:  call       "bool string.op_Equality(string, string)"
  IL_1d96:  brtrue     IL_2178
  IL_1d9b:  br         IL_2184
  IL_1da0:  ldarg.0
  IL_1da1:  ldstr      "cramfs-wend"
  IL_1da6:  call       "bool string.op_Equality(string, string)"
  IL_1dab:  brtrue     IL_2178
  IL_1db0:  br         IL_2184
  IL_1db5:  ldarg.0
  IL_1db6:  ldstr      "cryptkeeper"
  IL_1dbb:  call       "bool string.op_Equality(string, string)"
  IL_1dc0:  brtrue     IL_2178
  IL_1dc5:  br         IL_2184
  IL_1dca:  ldarg.0
  IL_1dcb:  ldstr      "ctfs"
  IL_1dd0:  call       "bool string.op_Equality(string, string)"
  IL_1dd5:  brtrue     IL_2178
  IL_1dda:  br         IL_2184
  IL_1ddf:  ldarg.0
  IL_1de0:  ldstr      "debugfs"
  IL_1de5:  call       "bool string.op_Equality(string, string)"
  IL_1dea:  brtrue     IL_2178
  IL_1def:  br         IL_2184
  IL_1df4:  ldarg.0
  IL_1df5:  ldstr      "dev"
  IL_1dfa:  call       "bool string.op_Equality(string, string)"
  IL_1dff:  brtrue     IL_2178
  IL_1e04:  br         IL_2184
  IL_1e09:  ldarg.0
  IL_1e0a:  ldstr      "devfs"
  IL_1e0f:  call       "bool string.op_Equality(string, string)"
  IL_1e14:  brtrue     IL_2178
  IL_1e19:  br         IL_2184
  IL_1e1e:  ldarg.0
  IL_1e1f:  ldstr      "devpts"
  IL_1e24:  call       "bool string.op_Equality(string, string)"
  IL_1e29:  brtrue     IL_2178
  IL_1e2e:  br         IL_2184
  IL_1e33:  ldarg.0
  IL_1e34:  ldstr      "devtmpfs"
  IL_1e39:  call       "bool string.op_Equality(string, string)"
  IL_1e3e:  brtrue     IL_2178
  IL_1e43:  br         IL_2184
  IL_1e48:  ldarg.0
  IL_1e49:  ldstr      "encfs"
  IL_1e4e:  call       "bool string.op_Equality(string, string)"
  IL_1e53:  brtrue     IL_2178
  IL_1e58:  br         IL_2184
  IL_1e5d:  ldarg.0
  IL_1e5e:  ldstr      "fd"
  IL_1e63:  call       "bool string.op_Equality(string, string)"
  IL_1e68:  brtrue     IL_2178
  IL_1e6d:  br         IL_2184
  IL_1e72:  ldarg.0
  IL_1e73:  ldstr      "fdesc"
  IL_1e78:  call       "bool string.op_Equality(string, string)"
  IL_1e7d:  brtrue     IL_2178
  IL_1e82:  br         IL_2184
  IL_1e87:  ldarg.0
  IL_1e88:  ldstr      "fuse.gvfsd-fuse"
  IL_1e8d:  call       "bool string.op_Equality(string, string)"
  IL_1e92:  brtrue     IL_2178
  IL_1e97:  br         IL_2184
  IL_1e9c:  ldarg.0
  IL_1e9d:  ldstr      "fusectl"
  IL_1ea2:  call       "bool string.op_Equality(string, string)"
  IL_1ea7:  brtrue     IL_2178
  IL_1eac:  br         IL_2184
  IL_1eb1:  ldarg.0
  IL_1eb2:  ldstr      "futexfs"
  IL_1eb7:  call       "bool string.op_Equality(string, string)"
  IL_1ebc:  brtrue     IL_2178
  IL_1ec1:  br         IL_2184
  IL_1ec6:  ldarg.0
  IL_1ec7:  ldstr      "hugetlbfs"
  IL_1ecc:  call       "bool string.op_Equality(string, string)"
  IL_1ed1:  brtrue     IL_2178
  IL_1ed6:  br         IL_2184
  IL_1edb:  ldarg.0
  IL_1edc:  ldstr      "libpam-encfs"
  IL_1ee1:  call       "bool string.op_Equality(string, string)"
  IL_1ee6:  brtrue     IL_2178
  IL_1eeb:  br         IL_2184
  IL_1ef0:  ldarg.0
  IL_1ef1:  ldstr      "ibpam-mount"
  IL_1ef6:  call       "bool string.op_Equality(string, string)"
  IL_1efb:  brtrue     IL_2178
  IL_1f00:  br         IL_2184
  IL_1f05:  ldarg.0
  IL_1f06:  ldstr      "mntfs"
  IL_1f0b:  call       "bool string.op_Equality(string, string)"
  IL_1f10:  brtrue     IL_2178
  IL_1f15:  br         IL_2184
  IL_1f1a:  ldarg.0
  IL_1f1b:  ldstr      "mqueue"
  IL_1f20:  call       "bool string.op_Equality(string, string)"
  IL_1f25:  brtrue     IL_2178
  IL_1f2a:  br         IL_2184
  IL_1f2f:  ldarg.0
  IL_1f30:  ldstr      "mtpfs"
  IL_1f35:  call       "bool string.op_Equality(string, string)"
  IL_1f3a:  brtrue     IL_2178
  IL_1f3f:  br         IL_2184
  IL_1f44:  ldarg.0
  IL_1f45:  ldstr      "mythtvfs"
  IL_1f4a:  call       "bool string.op_Equality(string, string)"
  IL_1f4f:  brtrue     IL_2178
  IL_1f54:  br         IL_2184
  IL_1f59:  ldarg.0
  IL_1f5a:  ldstr      "objfs"
  IL_1f5f:  call       "bool string.op_Equality(string, string)"
  IL_1f64:  brtrue     IL_2178
  IL_1f69:  br         IL_2184
  IL_1f6e:  ldarg.0
  IL_1f6f:  ldstr      "openprom"
  IL_1f74:  call       "bool string.op_Equality(string, string)"
  IL_1f79:  brtrue     IL_2178
  IL_1f7e:  br         IL_2184
  IL_1f83:  ldarg.0
  IL_1f84:  ldstr      "openpromfs"
  IL_1f89:  call       "bool string.op_Equality(string, string)"
  IL_1f8e:  brtrue     IL_2178
  IL_1f93:  br         IL_2184
  IL_1f98:  ldarg.0
  IL_1f99:  ldstr      "pipefs"
  IL_1f9e:  call       "bool string.op_Equality(string, string)"
  IL_1fa3:  brtrue     IL_2178
  IL_1fa8:  br         IL_2184
  IL_1fad:  ldarg.0
  IL_1fae:  ldstr      "plptools"
  IL_1fb3:  call       "bool string.op_Equality(string, string)"
  IL_1fb8:  brtrue     IL_2178
  IL_1fbd:  br         IL_2184
  IL_1fc2:  ldarg.0
  IL_1fc3:  ldstr      "proc"
  IL_1fc8:  call       "bool string.op_Equality(string, string)"
  IL_1fcd:  brtrue     IL_2178
  IL_1fd2:  br         IL_2184
  IL_1fd7:  ldarg.0
  IL_1fd8:  ldstr      "pstore"
  IL_1fdd:  call       "bool string.op_Equality(string, string)"
  IL_1fe2:  brtrue     IL_2178
  IL_1fe7:  br         IL_2184
  IL_1fec:  ldarg.0
  IL_1fed:  ldstr      "pytagsfs"
  IL_1ff2:  call       "bool string.op_Equality(string, string)"
  IL_1ff7:  brtrue     IL_2178
  IL_1ffc:  br         IL_2184
  IL_2001:  ldarg.0
  IL_2002:  ldstr      "ramfs"
  IL_2007:  call       "bool string.op_Equality(string, string)"
  IL_200c:  brtrue     IL_2178
  IL_2011:  br         IL_2184
  IL_2016:  ldarg.0
  IL_2017:  ldstr      "rofs"
  IL_201c:  call       "bool string.op_Equality(string, string)"
  IL_2021:  brtrue     IL_2178
  IL_2026:  br         IL_2184
  IL_202b:  ldarg.0
  IL_202c:  ldstr      "romfs"
  IL_2031:  call       "bool string.op_Equality(string, string)"
  IL_2036:  brtrue     IL_2178
  IL_203b:  br         IL_2184
  IL_2040:  ldarg.0
  IL_2041:  ldstr      "rootfs"
  IL_2046:  call       "bool string.op_Equality(string, string)"
  IL_204b:  brtrue     IL_2178
  IL_2050:  br         IL_2184
  IL_2055:  ldarg.0
  IL_2056:  ldstr      "securityfs"
  IL_205b:  call       "bool string.op_Equality(string, string)"
  IL_2060:  brtrue     IL_2178
  IL_2065:  br         IL_2184
  IL_206a:  ldarg.0
  IL_206b:  ldstr      "selinux"
  IL_2070:  call       "bool string.op_Equality(string, string)"
  IL_2075:  brtrue     IL_2178
  IL_207a:  br         IL_2184
  IL_207f:  ldarg.0
  IL_2080:  ldstr      "selinuxfs"
  IL_2085:  call       "bool string.op_Equality(string, string)"
  IL_208a:  brtrue     IL_2178
  IL_208f:  br         IL_2184
  IL_2094:  ldarg.0
  IL_2095:  ldstr      "sharefs"
  IL_209a:  call       "bool string.op_Equality(string, string)"
  IL_209f:  brtrue     IL_2178
  IL_20a4:  br         IL_2184
  IL_20a9:  ldarg.0
  IL_20aa:  ldstr      "sockfs"
  IL_20af:  call       "bool string.op_Equality(string, string)"
  IL_20b4:  brtrue     IL_2178
  IL_20b9:  br         IL_2184
  IL_20be:  ldarg.0
  IL_20bf:  ldstr      "sysfs"
  IL_20c4:  call       "bool string.op_Equality(string, string)"
  IL_20c9:  brtrue     IL_2178
  IL_20ce:  br         IL_2184
  IL_20d3:  ldarg.0
  IL_20d4:  ldstr      "tmpfs"
  IL_20d9:  call       "bool string.op_Equality(string, string)"
  IL_20de:  brtrue     IL_2178
  IL_20e3:  br         IL_2184
  IL_20e8:  ldarg.0
  IL_20e9:  ldstr      "udev"
  IL_20ee:  call       "bool string.op_Equality(string, string)"
  IL_20f3:  brtrue     IL_2178
  IL_20f8:  br         IL_2184
  IL_20fd:  ldarg.0
  IL_20fe:  ldstr      "usbdev"
  IL_2103:  call       "bool string.op_Equality(string, string)"
  IL_2108:  brtrue.s   IL_2178
  IL_210a:  br.s       IL_2184
  IL_210c:  ldarg.0
  IL_210d:  ldstr      "usbdevfs"
  IL_2112:  call       "bool string.op_Equality(string, string)"
  IL_2117:  brtrue.s   IL_2178
  IL_2119:  br.s       IL_2184
  IL_211b:  ldarg.0
  IL_211c:  ldstr      "gphotofs"
  IL_2121:  call       "bool string.op_Equality(string, string)"
  IL_2126:  brtrue.s   IL_217e
  IL_2128:  br.s       IL_2184
  IL_212a:  ldarg.0
  IL_212b:  ldstr      "sdcardfs"
  IL_2130:  call       "bool string.op_Equality(string, string)"
  IL_2135:  brtrue.s   IL_217e
  IL_2137:  br.s       IL_2184
  IL_2139:  ldarg.0
  IL_213a:  ldstr      "usbfs"
  IL_213f:  call       "bool string.op_Equality(string, string)"
  IL_2144:  brtrue.s   IL_217e
  IL_2146:  br.s       IL_2184
  IL_2148:  ldarg.0
  IL_2149:  ldstr      "usbdevice"
  IL_214e:  call       "bool string.op_Equality(string, string)"
  IL_2153:  brtrue.s   IL_217e
  IL_2155:  br.s       IL_2184
  IL_2157:  ldarg.0
  IL_2158:  ldstr      "vfat"
  IL_215d:  call       "bool string.op_Equality(string, string)"
  IL_2162:  brtrue.s   IL_217e
  IL_2164:  br.s       IL_2184
  IL_2166:  ldstr      "cddafs"
  IL_216b:  ret
  IL_216c:  ldstr      "aafs"
  IL_2171:  ret
  IL_2172:  ldstr      "9p"
  IL_2177:  ret
  IL_2178:  ldstr      "anon_inode"
  IL_217d:  ret
  IL_217e:  ldstr      "gphotofs"
  IL_2183:  ret
  IL_2184:  ldstr      "default"
  IL_2189:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void GetContents()
    {
        // Based on https://github.com/dotnet/runtime/blob/a30de6d40f69ef612b514344a5ec83fffd10b957/src/libraries/System.Formats.Asn1/src/System/Formats/Asn1/WellKnownOids.cs#L317-L419
        // Buckets: 5, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 4, 2, 2, 1, 1, 3, 2, 2, 1, 3, 3, 2, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 1, 2, 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1
        var source = """
assert("1.2.840.113549.1.5.13");
assert(null, "default");
assert("", "default");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string value)
    {
        return value switch
        {
            "1.2.840.10040.4.1" => "1.2.840.10040.4.1",
            "1.2.840.10040.4.3" => "1.2.840.10040.4.3",
            "1.2.840.10045.2.1" => "1.2.840.10045.2.1",
            "1.2.840.10045.1.1" => "1.2.840.10045.1.1",
            "1.2.840.10045.1.2" => "1.2.840.10045.1.2",
            "1.2.840.10045.3.1.7" => "1.2.840.10045.3.1.7",
            "1.2.840.10045.4.1" => "1.2.840.10045.4.1",
            "1.2.840.10045.4.3.2" => "1.2.840.10045.4.3.2",
            "1.2.840.10045.4.3.3" => "1.2.840.10045.4.3.3",
            "1.2.840.10045.4.3.4" => "1.2.840.10045.4.3.4",
            "1.2.840.113549.1.1.1" => "1.2.840.113549.1.1.1",
            "1.2.840.113549.1.1.5" => "1.2.840.113549.1.1.5",
            "1.2.840.113549.1.1.7" => "1.2.840.113549.1.1.7",
            "1.2.840.113549.1.1.8" => "1.2.840.113549.1.1.8",
            "1.2.840.113549.1.1.9" => "1.2.840.113549.1.1.9",
            "1.2.840.113549.1.1.10" => "1.2.840.113549.1.1.10",
            "1.2.840.113549.1.1.11" => "1.2.840.113549.1.1.11",
            "1.2.840.113549.1.1.12" => "1.2.840.113549.1.1.12",
            "1.2.840.113549.1.1.13" => "1.2.840.113549.1.1.13",
            "1.2.840.113549.1.5.3" => "1.2.840.113549.1.5.3",
            "1.2.840.113549.1.5.10" => "1.2.840.113549.1.5.10",
            "1.2.840.113549.1.5.11" => "1.2.840.113549.1.5.11",
            "1.2.840.113549.1.5.12" => "1.2.840.113549.1.5.12",
            "1.2.840.113549.1.5.13" => "1.2.840.113549.1.5.13",
            "1.2.840.113549.1.7.1" => "1.2.840.113549.1.7.1",
            "1.2.840.113549.1.7.2" => "1.2.840.113549.1.7.2",
            "1.2.840.113549.1.7.3" => "1.2.840.113549.1.7.3",
            "1.2.840.113549.1.7.6" => "1.2.840.113549.1.7.6",
            "1.2.840.113549.1.9.1" => "1.2.840.113549.1.9.1",
            "1.2.840.113549.1.9.3" => "1.2.840.113549.1.9.3",
            "1.2.840.113549.1.9.4" => "1.2.840.113549.1.9.4",
            "1.2.840.113549.1.9.5" => "1.2.840.113549.1.9.5",
            "1.2.840.113549.1.9.6" => "1.2.840.113549.1.9.6",
            "1.2.840.113549.1.9.7" => "1.2.840.113549.1.9.7",
            "1.2.840.113549.1.9.14" => "1.2.840.113549.1.9.14",
            "1.2.840.113549.1.9.15" => "1.2.840.113549.1.9.15",
            "1.2.840.113549.1.9.16.1.4" => "1.2.840.113549.1.9.16.1.4",
            "1.2.840.113549.1.9.16.2.12" => "1.2.840.113549.1.9.16.2.12",
            "1.2.840.113549.1.9.16.2.14" => "1.2.840.113549.1.9.16.2.14",
            "1.2.840.113549.1.9.16.2.47" => "1.2.840.113549.1.9.16.2.47",
            "1.2.840.113549.1.9.20" => "1.2.840.113549.1.9.20",
            "1.2.840.113549.1.9.21" => "1.2.840.113549.1.9.21",
            "1.2.840.113549.1.9.22.1" => "1.2.840.113549.1.9.22.1",
            "1.2.840.113549.1.12.1.3" => "1.2.840.113549.1.12.1.3",
            "1.2.840.113549.1.12.1.5" => "1.2.840.113549.1.12.1.5",
            "1.2.840.113549.1.12.1.6" => "1.2.840.113549.1.12.1.6",
            "1.2.840.113549.1.12.10.1.1" => "1.2.840.113549.1.12.10.1.1",
            "1.2.840.113549.1.12.10.1.2" => "1.2.840.113549.1.12.10.1.2",
            "1.2.840.113549.1.12.10.1.3" => "1.2.840.113549.1.12.10.1.3",
            "1.2.840.113549.1.12.10.1.5" => "1.2.840.113549.1.12.10.1.5",
            "1.2.840.113549.1.12.10.1.6" => "1.2.840.113549.1.12.10.1.6",
            "1.2.840.113549.2.5" => "1.2.840.113549.2.5",
            "1.2.840.113549.2.7" => "1.2.840.113549.2.7",
            "1.2.840.113549.2.9" => "1.2.840.113549.2.9",
            "1.2.840.113549.2.10" => "1.2.840.113549.2.10",
            "1.2.840.113549.2.11" => "1.2.840.113549.2.11",
            "1.2.840.113549.3.2" => "1.2.840.113549.3.2",
            "1.2.840.113549.3.7" => "1.2.840.113549.3.7",
            "1.3.6.1.4.1.311.17.1" => "1.3.6.1.4.1.311.17.1",
            "1.3.6.1.4.1.311.17.3.20" => "1.3.6.1.4.1.311.17.3.20",
            "1.3.6.1.4.1.311.20.2.3" => "1.3.6.1.4.1.311.20.2.3",
            "1.3.6.1.4.1.311.88.2.1" => "1.3.6.1.4.1.311.88.2.1",
            "1.3.6.1.4.1.311.88.2.2" => "1.3.6.1.4.1.311.88.2.2",
            "1.3.6.1.5.5.7.3.1" => "1.3.6.1.5.5.7.3.1",
            "1.3.6.1.5.5.7.3.2" => "1.3.6.1.5.5.7.3.2",
            "1.3.6.1.5.5.7.3.3" => "1.3.6.1.5.5.7.3.3",
            "1.3.6.1.5.5.7.3.4" => "1.3.6.1.5.5.7.3.4",
            "1.3.6.1.5.5.7.3.8" => "1.3.6.1.5.5.7.3.8",
            "1.3.6.1.5.5.7.3.9" => "1.3.6.1.5.5.7.3.9",
            "1.3.6.1.5.5.7.6.2" => "1.3.6.1.5.5.7.6.2",
            "1.3.6.1.5.5.7.48.1" => "1.3.6.1.5.5.7.48.1",
            "1.3.6.1.5.5.7.48.1.2" => "1.3.6.1.5.5.7.48.1.2",
            "1.3.6.1.5.5.7.48.2" => "1.3.6.1.5.5.7.48.2",
            "1.3.14.3.2.26" => "1.3.14.3.2.26",
            "1.3.14.3.2.7" => "1.3.14.3.2.7",
            "1.3.132.0.34" => "1.3.132.0.34",
            "1.3.132.0.35" => "1.3.132.0.35",
            "2.5.4.3" => "2.5.4.3",
            "2.5.4.5" => "2.5.4.5",
            "2.5.4.6" => "2.5.4.6",
            "2.5.4.7" => "2.5.4.7",
            "2.5.4.8" => "2.5.4.8",
            "2.5.4.10" => "2.5.4.10",
            "2.5.4.11" => "2.5.4.11",
            "2.5.4.97" => "2.5.4.97",
            "2.5.29.14" => "2.5.29.14",
            "2.5.29.15" => "2.5.29.15",
            "2.5.29.17" => "2.5.29.17",
            "2.5.29.19" => "2.5.29.19",
            "2.5.29.20" => "2.5.29.20",
            "2.5.29.35" => "2.5.29.35",
            "2.16.840.1.101.3.4.1.2" => "2.16.840.1.101.3.4.1.2",
            "2.16.840.1.101.3.4.1.22" => "2.16.840.1.101.3.4.1.22",
            "2.16.840.1.101.3.4.1.42" => "2.16.840.1.101.3.4.1.42",
            "2.16.840.1.101.3.4.2.1" => "2.16.840.1.101.3.4.2.1",
            "2.16.840.1.101.3.4.2.2" => "2.16.840.1.101.3.4.2.2",
            "2.16.840.1.101.3.4.2.3" => "2.16.840.1.101.3.4.2.3",
            "2.23.140.1.2.1" => "2.23.140.1.2.1",
            "2.23.140.1.2.2" => "2.23.140.1.2.2",
            _ => "default",
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size     3704 (0xe78)
  .maxstack  2
  .locals init (string V_0,
                int V_1,
                char V_2)
  IL_0000:  ldarg.0
  IL_0001:  brfalse    IL_0e70
  IL_0006:  ldarg.0
  IL_0007:  call       "int string.Length.get"
  IL_000c:  stloc.1
  IL_000d:  ldloc.1
  IL_000e:  ldc.i4.7
  IL_000f:  sub
  IL_0010:  switch    (
        IL_0234,
        IL_0262,
        IL_0287,
        IL_0e70,
        IL_0e70,
        IL_020d,
        IL_08c0,
        IL_02bd,
        IL_0e70,
        IL_0e70,
        IL_006a,
        IL_01ac,
        IL_00a5,
        IL_00dc,
        IL_0117,
        IL_01e7,
        IL_0179,
        IL_0e70,
        IL_0672,
        IL_0146)
  IL_0065:  br         IL_0e70
  IL_006a:  ldarg.0
  IL_006b:  ldc.i4.s   16
  IL_006d:  call       "char string.this[int].get"
  IL_0072:  stloc.2
  IL_0073:  ldloc.2
  IL_0074:  ldc.i4.s   49
  IL_0076:  sub
  IL_0077:  switch    (
        IL_02db,
        IL_0355,
        IL_0330,
        IL_038a,
        IL_0e70,
        IL_0e70,
        IL_0e70,
        IL_039f,
        IL_03b4)
  IL_00a0:  br         IL_0e70
  IL_00a5:  ldarg.0
  IL_00a6:  ldc.i4.s   18
  IL_00a8:  call       "char string.this[int].get"
  IL_00ad:  stloc.2
  IL_00ae:  ldloc.2
  IL_00af:  ldc.i4.s   48
  IL_00b1:  sub
  IL_00b2:  switch    (
        IL_041d,
        IL_0432,
        IL_03de,
        IL_03f3,
        IL_0408,
        IL_0e70,
        IL_0e70,
        IL_03c9)
  IL_00d7:  br         IL_0e70
  IL_00dc:  ldarg.0
  IL_00dd:  ldc.i4.s   19
  IL_00df:  call       "char string.this[int].get"
  IL_00e4:  stloc.2
  IL_00e5:  ldloc.2
  IL_00e6:  ldc.i4.s   49
  IL_00e8:  sub
  IL_00e9:  switch    (
        IL_0447,
        IL_0535,
        IL_0500,
        IL_057f,
        IL_048c,
        IL_055a,
        IL_04b1,
        IL_04d6,
        IL_04eb)
  IL_0112:  br         IL_0e70
  IL_0117:  ldarg.0
  IL_0118:  ldc.i4.s   20
  IL_011a:  call       "char string.this[int].get"
  IL_011f:  stloc.2
  IL_0120:  ldloc.2
  IL_0121:  ldc.i4.s   48
  IL_0123:  sub
  IL_0124:  switch    (
        IL_0594,
        IL_05c9,
        IL_05fe,
        IL_0623,
        IL_0648,
        IL_065d)
  IL_0141:  br         IL_0e70
  IL_0146:  ldarg.0
  IL_0147:  ldc.i4.s   25
  IL_0149:  call       "char string.this[int].get"
  IL_014e:  stloc.2
  IL_014f:  ldloc.2
  IL_0150:  ldc.i4.s   49
  IL_0152:  sub
  IL_0153:  switch    (
        IL_06d6,
        IL_0687,
        IL_06eb,
        IL_06ac,
        IL_0700,
        IL_0715,
        IL_06c1)
  IL_0174:  br         IL_0e70
  IL_0179:  ldarg.0
  IL_017a:  ldc.i4.s   22
  IL_017c:  call       "char string.this[int].get"
  IL_0181:  stloc.2
  IL_0182:  ldloc.2
  IL_0183:  ldc.i4.s   48
  IL_0185:  sub
  IL_0186:  switch    (
        IL_077e,
        IL_072a,
        IL_0793,
        IL_073f,
        IL_0e70,
        IL_0754,
        IL_0769)
  IL_01a7:  br         IL_0e70
  IL_01ac:  ldarg.0
  IL_01ad:  ldc.i4.s   17
  IL_01af:  call       "char string.this[int].get"
  IL_01b4:  stloc.2
  IL_01b5:  ldloc.2
  IL_01b6:  ldc.i4.s   49
  IL_01b8:  sub
  IL_01b9:  switch    (
        IL_082c,
        IL_0807,
        IL_0e70,
        IL_0e70,
        IL_07b8,
        IL_0e70,
        IL_07cd,
        IL_0e70,
        IL_07f2)
  IL_01e2:  br         IL_0e70
  IL_01e7:  ldarg.0
  IL_01e8:  ldc.i4.s   16
  IL_01ea:  call       "char string.this[int].get"
  IL_01ef:  stloc.2
  IL_01f0:  ldloc.2
  IL_01f1:  ldc.i4.s   46
  IL_01f3:  beq        IL_087b
  IL_01f8:  ldloc.2
  IL_01f9:  ldc.i4.s   50
  IL_01fb:  beq        IL_0841
  IL_0200:  ldloc.2
  IL_0201:  ldc.i4.s   56
  IL_0203:  beq        IL_0856
  IL_0208:  br         IL_0e70
  IL_020d:  ldarg.0
  IL_020e:  ldc.i4.s   11
  IL_0210:  call       "char string.this[int].get"
  IL_0215:  stloc.2
  IL_0216:  ldloc.2
  IL_0217:  ldc.i4.s   52
  IL_0219:  sub
  IL_021a:  switch    (
        IL_08ea,
        IL_08ff,
        IL_0e70,
        IL_08d5)
  IL_022f:  br         IL_0e70
  IL_0234:  ldarg.0
  IL_0235:  ldc.i4.6
  IL_0236:  call       "char string.this[int].get"
  IL_023b:  stloc.2
  IL_023c:  ldloc.2
  IL_023d:  ldc.i4.s   51
  IL_023f:  sub
  IL_0240:  switch    (
        IL_0914,
        IL_0e70,
        IL_0929,
        IL_093e,
        IL_0953,
        IL_0968)
  IL_025d:  br         IL_0e70
  IL_0262:  ldarg.0
  IL_0263:  ldc.i4.7
  IL_0264:  call       "char string.this[int].get"
  IL_0269:  stloc.2
  IL_026a:  ldloc.2
  IL_026b:  ldc.i4.s   48
  IL_026d:  beq        IL_097d
  IL_0272:  ldloc.2
  IL_0273:  ldc.i4.s   49
  IL_0275:  beq        IL_0992
  IL_027a:  ldloc.2
  IL_027b:  ldc.i4.s   55
  IL_027d:  beq        IL_09a7
  IL_0282:  br         IL_0e70
  IL_0287:  ldarg.0
  IL_0288:  ldc.i4.8
  IL_0289:  call       "char string.this[int].get"
  IL_028e:  stloc.2
  IL_028f:  ldloc.2
  IL_0290:  ldc.i4.s   48
  IL_0292:  beq        IL_0a20
  IL_0297:  ldloc.2
  IL_0298:  ldc.i4.s   52
  IL_029a:  sub
  IL_029b:  switch    (
        IL_09bc,
        IL_09d1,
        IL_0e70,
        IL_09f6,
        IL_0e70,
        IL_0a0b)
  IL_02b8:  br         IL_0e70
  IL_02bd:  ldarg.0
  IL_02be:  ldc.i4.s   13
  IL_02c0:  call       "char string.this[int].get"
  IL_02c5:  stloc.2
  IL_02c6:  ldloc.2
  IL_02c7:  ldc.i4.s   49
  IL_02c9:  beq        IL_0a35
  IL_02ce:  ldloc.2
  IL_02cf:  ldc.i4.s   50
  IL_02d1:  beq        IL_0a4a
  IL_02d6:  br         IL_0e70
  IL_02db:  ldarg.0
  IL_02dc:  ldstr      "1.2.840.10040.4.1"
  IL_02e1:  call       "bool string.op_Equality(string, string)"
  IL_02e6:  brtrue     IL_0a5f
  IL_02eb:  ldarg.0
  IL_02ec:  ldstr      "1.2.840.10045.2.1"
  IL_02f1:  call       "bool string.op_Equality(string, string)"
  IL_02f6:  brtrue     IL_0a75
  IL_02fb:  ldarg.0
  IL_02fc:  ldstr      "1.2.840.10045.1.1"
  IL_0301:  call       "bool string.op_Equality(string, string)"
  IL_0306:  brtrue     IL_0a80
  IL_030b:  ldarg.0
  IL_030c:  ldstr      "1.2.840.10045.4.1"
  IL_0311:  call       "bool string.op_Equality(string, string)"
  IL_0316:  brtrue     IL_0aa1
  IL_031b:  ldarg.0
  IL_031c:  ldstr      "1.3.6.1.5.5.7.3.1"
  IL_0321:  call       "bool string.op_Equality(string, string)"
  IL_0326:  brtrue     IL_0d14
  IL_032b:  br         IL_0e70
  IL_0330:  ldarg.0
  IL_0331:  ldstr      "1.2.840.10040.4.3"
  IL_0336:  call       "bool string.op_Equality(string, string)"
  IL_033b:  brtrue     IL_0a6a
  IL_0340:  ldarg.0
  IL_0341:  ldstr      "1.3.6.1.5.5.7.3.3"
  IL_0346:  call       "bool string.op_Equality(string, string)"
  IL_034b:  brtrue     IL_0d2a
  IL_0350:  br         IL_0e70
  IL_0355:  ldarg.0
  IL_0356:  ldstr      "1.2.840.10045.1.2"
  IL_035b:  call       "bool string.op_Equality(string, string)"
  IL_0360:  brtrue     IL_0a8b
  IL_0365:  ldarg.0
  IL_0366:  ldstr      "1.3.6.1.5.5.7.3.2"
  IL_036b:  call       "bool string.op_Equality(string, string)"
  IL_0370:  brtrue     IL_0d1f
  IL_0375:  ldarg.0
  IL_0376:  ldstr      "1.3.6.1.5.5.7.6.2"
  IL_037b:  call       "bool string.op_Equality(string, string)"
  IL_0380:  brtrue     IL_0d56
  IL_0385:  br         IL_0e70
  IL_038a:  ldarg.0
  IL_038b:  ldstr      "1.3.6.1.5.5.7.3.4"
  IL_0390:  call       "bool string.op_Equality(string, string)"
  IL_0395:  brtrue     IL_0d35
  IL_039a:  br         IL_0e70
  IL_039f:  ldarg.0
  IL_03a0:  ldstr      "1.3.6.1.5.5.7.3.8"
  IL_03a5:  call       "bool string.op_Equality(string, string)"
  IL_03aa:  brtrue     IL_0d40
  IL_03af:  br         IL_0e70
  IL_03b4:  ldarg.0
  IL_03b5:  ldstr      "1.3.6.1.5.5.7.3.9"
  IL_03ba:  call       "bool string.op_Equality(string, string)"
  IL_03bf:  brtrue     IL_0d4b
  IL_03c4:  br         IL_0e70
  IL_03c9:  ldarg.0
  IL_03ca:  ldstr      "1.2.840.10045.3.1.7"
  IL_03cf:  call       "bool string.op_Equality(string, string)"
  IL_03d4:  brtrue     IL_0a96
  IL_03d9:  br         IL_0e70
  IL_03de:  ldarg.0
  IL_03df:  ldstr      "1.2.840.10045.4.3.2"
  IL_03e4:  call       "bool string.op_Equality(string, string)"
  IL_03e9:  brtrue     IL_0aac
  IL_03ee:  br         IL_0e70
  IL_03f3:  ldarg.0
  IL_03f4:  ldstr      "1.2.840.10045.4.3.3"
  IL_03f9:  call       "bool string.op_Equality(string, string)"
  IL_03fe:  brtrue     IL_0ab7
  IL_0403:  br         IL_0e70
  IL_0408:  ldarg.0
  IL_0409:  ldstr      "1.2.840.10045.4.3.4"
  IL_040e:  call       "bool string.op_Equality(string, string)"
  IL_0413:  brtrue     IL_0ac2
  IL_0418:  br         IL_0e70
  IL_041d:  ldarg.0
  IL_041e:  ldstr      "1.2.840.113549.2.10"
  IL_0423:  call       "bool string.op_Equality(string, string)"
  IL_0428:  brtrue     IL_0cb1
  IL_042d:  br         IL_0e70
  IL_0432:  ldarg.0
  IL_0433:  ldstr      "1.2.840.113549.2.11"
  IL_0438:  call       "bool string.op_Equality(string, string)"
  IL_043d:  brtrue     IL_0cbc
  IL_0442:  br         IL_0e70
  IL_0447:  ldarg.0
  IL_0448:  ldstr      "1.2.840.113549.1.1.1"
  IL_044d:  call       "bool string.op_Equality(string, string)"
  IL_0452:  brtrue     IL_0acd
  IL_0457:  ldarg.0
  IL_0458:  ldstr      "1.2.840.113549.1.7.1"
  IL_045d:  call       "bool string.op_Equality(string, string)"
  IL_0462:  brtrue     IL_0b67
  IL_0467:  ldarg.0
  IL_0468:  ldstr      "1.2.840.113549.1.9.1"
  IL_046d:  call       "bool string.op_Equality(string, string)"
  IL_0472:  brtrue     IL_0b93
  IL_0477:  ldarg.0
  IL_0478:  ldstr      "1.3.6.1.4.1.311.17.1"
  IL_047d:  call       "bool string.op_Equality(string, string)"
  IL_0482:  brtrue     IL_0cdd
  IL_0487:  br         IL_0e70
  IL_048c:  ldarg.0
  IL_048d:  ldstr      "1.2.840.113549.1.1.5"
  IL_0492:  call       "bool string.op_Equality(string, string)"
  IL_0497:  brtrue     IL_0ad8
  IL_049c:  ldarg.0
  IL_049d:  ldstr      "1.2.840.113549.1.9.5"
  IL_04a2:  call       "bool string.op_Equality(string, string)"
  IL_04a7:  brtrue     IL_0bb4
  IL_04ac:  br         IL_0e70
  IL_04b1:  ldarg.0
  IL_04b2:  ldstr      "1.2.840.113549.1.1.7"
  IL_04b7:  call       "bool string.op_Equality(string, string)"
  IL_04bc:  brtrue     IL_0ae3
  IL_04c1:  ldarg.0
  IL_04c2:  ldstr      "1.2.840.113549.1.9.7"
  IL_04c7:  call       "bool string.op_Equality(string, string)"
  IL_04cc:  brtrue     IL_0bca
  IL_04d1:  br         IL_0e70
  IL_04d6:  ldarg.0
  IL_04d7:  ldstr      "1.2.840.113549.1.1.8"
  IL_04dc:  call       "bool string.op_Equality(string, string)"
  IL_04e1:  brtrue     IL_0aee
  IL_04e6:  br         IL_0e70
  IL_04eb:  ldarg.0
  IL_04ec:  ldstr      "1.2.840.113549.1.1.9"
  IL_04f1:  call       "bool string.op_Equality(string, string)"
  IL_04f6:  brtrue     IL_0af9
  IL_04fb:  br         IL_0e70
  IL_0500:  ldarg.0
  IL_0501:  ldstr      "1.2.840.113549.1.5.3"
  IL_0506:  call       "bool string.op_Equality(string, string)"
  IL_050b:  brtrue     IL_0b30
  IL_0510:  ldarg.0
  IL_0511:  ldstr      "1.2.840.113549.1.7.3"
  IL_0516:  call       "bool string.op_Equality(string, string)"
  IL_051b:  brtrue     IL_0b7d
  IL_0520:  ldarg.0
  IL_0521:  ldstr      "1.2.840.113549.1.9.3"
  IL_0526:  call       "bool string.op_Equality(string, string)"
  IL_052b:  brtrue     IL_0b9e
  IL_0530:  br         IL_0e70
  IL_0535:  ldarg.0
  IL_0536:  ldstr      "1.2.840.113549.1.7.2"
  IL_053b:  call       "bool string.op_Equality(string, string)"
  IL_0540:  brtrue     IL_0b72
  IL_0545:  ldarg.0
  IL_0546:  ldstr      "1.3.6.1.5.5.7.48.1.2"
  IL_054b:  call       "bool string.op_Equality(string, string)"
  IL_0550:  brtrue     IL_0d6c
  IL_0555:  br         IL_0e70
  IL_055a:  ldarg.0
  IL_055b:  ldstr      "1.2.840.113549.1.7.6"
  IL_0560:  call       "bool string.op_Equality(string, string)"
  IL_0565:  brtrue     IL_0b88
  IL_056a:  ldarg.0
  IL_056b:  ldstr      "1.2.840.113549.1.9.6"
  IL_0570:  call       "bool string.op_Equality(string, string)"
  IL_0575:  brtrue     IL_0bbf
  IL_057a:  br         IL_0e70
  IL_057f:  ldarg.0
  IL_0580:  ldstr      "1.2.840.113549.1.9.4"
  IL_0585:  call       "bool string.op_Equality(string, string)"
  IL_058a:  brtrue     IL_0ba9
  IL_058f:  br         IL_0e70
  IL_0594:  ldarg.0
  IL_0595:  ldstr      "1.2.840.113549.1.1.10"
  IL_059a:  call       "bool string.op_Equality(string, string)"
  IL_059f:  brtrue     IL_0b04
  IL_05a4:  ldarg.0
  IL_05a5:  ldstr      "1.2.840.113549.1.5.10"
  IL_05aa:  call       "bool string.op_Equality(string, string)"
  IL_05af:  brtrue     IL_0b3b
  IL_05b4:  ldarg.0
  IL_05b5:  ldstr      "1.2.840.113549.1.9.20"
  IL_05ba:  call       "bool string.op_Equality(string, string)"
  IL_05bf:  brtrue     IL_0c17
  IL_05c4:  br         IL_0e70
  IL_05c9:  ldarg.0
  IL_05ca:  ldstr      "1.2.840.113549.1.1.11"
  IL_05cf:  call       "bool string.op_Equality(string, string)"
  IL_05d4:  brtrue     IL_0b0f
  IL_05d9:  ldarg.0
  IL_05da:  ldstr      "1.2.840.113549.1.5.11"
  IL_05df:  call       "bool string.op_Equality(string, string)"
  IL_05e4:  brtrue     IL_0b46
  IL_05e9:  ldarg.0
  IL_05ea:  ldstr      "1.2.840.113549.1.9.21"
  IL_05ef:  call       "bool string.op_Equality(string, string)"
  IL_05f4:  brtrue     IL_0c22
  IL_05f9:  br         IL_0e70
  IL_05fe:  ldarg.0
  IL_05ff:  ldstr      "1.2.840.113549.1.1.12"
  IL_0604:  call       "bool string.op_Equality(string, string)"
  IL_0609:  brtrue     IL_0b1a
  IL_060e:  ldarg.0
  IL_060f:  ldstr      "1.2.840.113549.1.5.12"
  IL_0614:  call       "bool string.op_Equality(string, string)"
  IL_0619:  brtrue     IL_0b51
  IL_061e:  br         IL_0e70
  IL_0623:  ldarg.0
  IL_0624:  ldstr      "1.2.840.113549.1.1.13"
  IL_0629:  call       "bool string.op_Equality(string, string)"
  IL_062e:  brtrue     IL_0b25
  IL_0633:  ldarg.0
  IL_0634:  ldstr      "1.2.840.113549.1.5.13"
  IL_0639:  call       "bool string.op_Equality(string, string)"
  IL_063e:  brtrue     IL_0b5c
  IL_0643:  br         IL_0e70
  IL_0648:  ldarg.0
  IL_0649:  ldstr      "1.2.840.113549.1.9.14"
  IL_064e:  call       "bool string.op_Equality(string, string)"
  IL_0653:  brtrue     IL_0bd5
  IL_0658:  br         IL_0e70
  IL_065d:  ldarg.0
  IL_065e:  ldstr      "1.2.840.113549.1.9.15"
  IL_0663:  call       "bool string.op_Equality(string, string)"
  IL_0668:  brtrue     IL_0be0
  IL_066d:  br         IL_0e70
  IL_0672:  ldarg.0
  IL_0673:  ldstr      "1.2.840.113549.1.9.16.1.4"
  IL_0678:  call       "bool string.op_Equality(string, string)"
  IL_067d:  brtrue     IL_0beb
  IL_0682:  br         IL_0e70
  IL_0687:  ldarg.0
  IL_0688:  ldstr      "1.2.840.113549.1.9.16.2.12"
  IL_068d:  call       "bool string.op_Equality(string, string)"
  IL_0692:  brtrue     IL_0bf6
  IL_0697:  ldarg.0
  IL_0698:  ldstr      "1.2.840.113549.1.12.10.1.2"
  IL_069d:  call       "bool string.op_Equality(string, string)"
  IL_06a2:  brtrue     IL_0c64
  IL_06a7:  br         IL_0e70
  IL_06ac:  ldarg.0
  IL_06ad:  ldstr      "1.2.840.113549.1.9.16.2.14"
  IL_06b2:  call       "bool string.op_Equality(string, string)"
  IL_06b7:  brtrue     IL_0c01
  IL_06bc:  br         IL_0e70
  IL_06c1:  ldarg.0
  IL_06c2:  ldstr      "1.2.840.113549.1.9.16.2.47"
  IL_06c7:  call       "bool string.op_Equality(string, string)"
  IL_06cc:  brtrue     IL_0c0c
  IL_06d1:  br         IL_0e70
  IL_06d6:  ldarg.0
  IL_06d7:  ldstr      "1.2.840.113549.1.12.10.1.1"
  IL_06dc:  call       "bool string.op_Equality(string, string)"
  IL_06e1:  brtrue     IL_0c59
  IL_06e6:  br         IL_0e70
  IL_06eb:  ldarg.0
  IL_06ec:  ldstr      "1.2.840.113549.1.12.10.1.3"
  IL_06f1:  call       "bool string.op_Equality(string, string)"
  IL_06f6:  brtrue     IL_0c6f
  IL_06fb:  br         IL_0e70
  IL_0700:  ldarg.0
  IL_0701:  ldstr      "1.2.840.113549.1.12.10.1.5"
  IL_0706:  call       "bool string.op_Equality(string, string)"
  IL_070b:  brtrue     IL_0c7a
  IL_0710:  br         IL_0e70
  IL_0715:  ldarg.0
  IL_0716:  ldstr      "1.2.840.113549.1.12.10.1.6"
  IL_071b:  call       "bool string.op_Equality(string, string)"
  IL_0720:  brtrue     IL_0c85
  IL_0725:  br         IL_0e70
  IL_072a:  ldarg.0
  IL_072b:  ldstr      "1.2.840.113549.1.9.22.1"
  IL_0730:  call       "bool string.op_Equality(string, string)"
  IL_0735:  brtrue     IL_0c2d
  IL_073a:  br         IL_0e70
  IL_073f:  ldarg.0
  IL_0740:  ldstr      "1.2.840.113549.1.12.1.3"
  IL_0745:  call       "bool string.op_Equality(string, string)"
  IL_074a:  brtrue     IL_0c38
  IL_074f:  br         IL_0e70
  IL_0754:  ldarg.0
  IL_0755:  ldstr      "1.2.840.113549.1.12.1.5"
  IL_075a:  call       "bool string.op_Equality(string, string)"
  IL_075f:  brtrue     IL_0c43
  IL_0764:  br         IL_0e70
  IL_0769:  ldarg.0
  IL_076a:  ldstr      "1.2.840.113549.1.12.1.6"
  IL_076f:  call       "bool string.op_Equality(string, string)"
  IL_0774:  brtrue     IL_0c4e
  IL_0779:  br         IL_0e70
  IL_077e:  ldarg.0
  IL_077f:  ldstr      "1.3.6.1.4.1.311.17.3.20"
  IL_0784:  call       "bool string.op_Equality(string, string)"
  IL_0789:  brtrue     IL_0ce8
  IL_078e:  br         IL_0e70
  IL_0793:  ldarg.0
  IL_0794:  ldstr      "2.16.840.1.101.3.4.1.22"
  IL_0799:  call       "bool string.op_Equality(string, string)"
  IL_079e:  brtrue     IL_0e38
  IL_07a3:  ldarg.0
  IL_07a4:  ldstr      "2.16.840.1.101.3.4.1.42"
  IL_07a9:  call       "bool string.op_Equality(string, string)"
  IL_07ae:  brtrue     IL_0e40
  IL_07b3:  br         IL_0e70
  IL_07b8:  ldarg.0
  IL_07b9:  ldstr      "1.2.840.113549.2.5"
  IL_07be:  call       "bool string.op_Equality(string, string)"
  IL_07c3:  brtrue     IL_0c90
  IL_07c8:  br         IL_0e70
  IL_07cd:  ldarg.0
  IL_07ce:  ldstr      "1.2.840.113549.2.7"
  IL_07d3:  call       "bool string.op_Equality(string, string)"
  IL_07d8:  brtrue     IL_0c9b
  IL_07dd:  ldarg.0
  IL_07de:  ldstr      "1.2.840.113549.3.7"
  IL_07e3:  call       "bool string.op_Equality(string, string)"
  IL_07e8:  brtrue     IL_0cd2
  IL_07ed:  br         IL_0e70
  IL_07f2:  ldarg.0
  IL_07f3:  ldstr      "1.2.840.113549.2.9"
  IL_07f8:  call       "bool string.op_Equality(string, string)"
  IL_07fd:  brtrue     IL_0ca6
  IL_0802:  br         IL_0e70
  IL_0807:  ldarg.0
  IL_0808:  ldstr      "1.2.840.113549.3.2"
  IL_080d:  call       "bool string.op_Equality(string, string)"
  IL_0812:  brtrue     IL_0cc7
  IL_0817:  ldarg.0
  IL_0818:  ldstr      "1.3.6.1.5.5.7.48.2"
  IL_081d:  call       "bool string.op_Equality(string, string)"
  IL_0822:  brtrue     IL_0d77
  IL_0827:  br         IL_0e70
  IL_082c:  ldarg.0
  IL_082d:  ldstr      "1.3.6.1.5.5.7.48.1"
  IL_0832:  call       "bool string.op_Equality(string, string)"
  IL_0837:  brtrue     IL_0d61
  IL_083c:  br         IL_0e70
  IL_0841:  ldarg.0
  IL_0842:  ldstr      "1.3.6.1.4.1.311.20.2.3"
  IL_0847:  call       "bool string.op_Equality(string, string)"
  IL_084c:  brtrue     IL_0cf3
  IL_0851:  br         IL_0e70
  IL_0856:  ldarg.0
  IL_0857:  ldstr      "1.3.6.1.4.1.311.88.2.1"
  IL_085c:  call       "bool string.op_Equality(string, string)"
  IL_0861:  brtrue     IL_0cfe
  IL_0866:  ldarg.0
  IL_0867:  ldstr      "1.3.6.1.4.1.311.88.2.2"
  IL_086c:  call       "bool string.op_Equality(string, string)"
  IL_0871:  brtrue     IL_0d09
  IL_0876:  br         IL_0e70
  IL_087b:  ldarg.0
  IL_087c:  ldstr      "2.16.840.1.101.3.4.1.2"
  IL_0881:  call       "bool string.op_Equality(string, string)"
  IL_0886:  brtrue     IL_0e30
  IL_088b:  ldarg.0
  IL_088c:  ldstr      "2.16.840.1.101.3.4.2.1"
  IL_0891:  call       "bool string.op_Equality(string, string)"
  IL_0896:  brtrue     IL_0e48
  IL_089b:  ldarg.0
  IL_089c:  ldstr      "2.16.840.1.101.3.4.2.2"
  IL_08a1:  call       "bool string.op_Equality(string, string)"
  IL_08a6:  brtrue     IL_0e50
  IL_08ab:  ldarg.0
  IL_08ac:  ldstr      "2.16.840.1.101.3.4.2.3"
  IL_08b1:  call       "bool string.op_Equality(string, string)"
  IL_08b6:  brtrue     IL_0e58
  IL_08bb:  br         IL_0e70
  IL_08c0:  ldarg.0
  IL_08c1:  ldstr      "1.3.14.3.2.26"
  IL_08c6:  call       "bool string.op_Equality(string, string)"
  IL_08cb:  brtrue     IL_0d82
  IL_08d0:  br         IL_0e70
  IL_08d5:  ldarg.0
  IL_08d6:  ldstr      "1.3.14.3.2.7"
  IL_08db:  call       "bool string.op_Equality(string, string)"
  IL_08e0:  brtrue     IL_0d8d
  IL_08e5:  br         IL_0e70
  IL_08ea:  ldarg.0
  IL_08eb:  ldstr      "1.3.132.0.34"
  IL_08f0:  call       "bool string.op_Equality(string, string)"
  IL_08f5:  brtrue     IL_0d98
  IL_08fa:  br         IL_0e70
  IL_08ff:  ldarg.0
  IL_0900:  ldstr      "1.3.132.0.35"
  IL_0905:  call       "bool string.op_Equality(string, string)"
  IL_090a:  brtrue     IL_0da3
  IL_090f:  br         IL_0e70
  IL_0914:  ldarg.0
  IL_0915:  ldstr      "2.5.4.3"
  IL_091a:  call       "bool string.op_Equality(string, string)"
  IL_091f:  brtrue     IL_0dae
  IL_0924:  br         IL_0e70
  IL_0929:  ldarg.0
  IL_092a:  ldstr      "2.5.4.5"
  IL_092f:  call       "bool string.op_Equality(string, string)"
  IL_0934:  brtrue     IL_0db9
  IL_0939:  br         IL_0e70
  IL_093e:  ldarg.0
  IL_093f:  ldstr      "2.5.4.6"
  IL_0944:  call       "bool string.op_Equality(string, string)"
  IL_0949:  brtrue     IL_0dc4
  IL_094e:  br         IL_0e70
  IL_0953:  ldarg.0
  IL_0954:  ldstr      "2.5.4.7"
  IL_0959:  call       "bool string.op_Equality(string, string)"
  IL_095e:  brtrue     IL_0dcf
  IL_0963:  br         IL_0e70
  IL_0968:  ldarg.0
  IL_0969:  ldstr      "2.5.4.8"
  IL_096e:  call       "bool string.op_Equality(string, string)"
  IL_0973:  brtrue     IL_0dda
  IL_0978:  br         IL_0e70
  IL_097d:  ldarg.0
  IL_097e:  ldstr      "2.5.4.10"
  IL_0983:  call       "bool string.op_Equality(string, string)"
  IL_0988:  brtrue     IL_0de5
  IL_098d:  br         IL_0e70
  IL_0992:  ldarg.0
  IL_0993:  ldstr      "2.5.4.11"
  IL_0998:  call       "bool string.op_Equality(string, string)"
  IL_099d:  brtrue     IL_0df0
  IL_09a2:  br         IL_0e70
  IL_09a7:  ldarg.0
  IL_09a8:  ldstr      "2.5.4.97"
  IL_09ad:  call       "bool string.op_Equality(string, string)"
  IL_09b2:  brtrue     IL_0df8
  IL_09b7:  br         IL_0e70
  IL_09bc:  ldarg.0
  IL_09bd:  ldstr      "2.5.29.14"
  IL_09c2:  call       "bool string.op_Equality(string, string)"
  IL_09c7:  brtrue     IL_0e00
  IL_09cc:  br         IL_0e70
  IL_09d1:  ldarg.0
  IL_09d2:  ldstr      "2.5.29.15"
  IL_09d7:  call       "bool string.op_Equality(string, string)"
  IL_09dc:  brtrue     IL_0e08
  IL_09e1:  ldarg.0
  IL_09e2:  ldstr      "2.5.29.35"
  IL_09e7:  call       "bool string.op_Equality(string, string)"
  IL_09ec:  brtrue     IL_0e28
  IL_09f1:  br         IL_0e70
  IL_09f6:  ldarg.0
  IL_09f7:  ldstr      "2.5.29.17"
  IL_09fc:  call       "bool string.op_Equality(string, string)"
  IL_0a01:  brtrue     IL_0e10
  IL_0a06:  br         IL_0e70
  IL_0a0b:  ldarg.0
  IL_0a0c:  ldstr      "2.5.29.19"
  IL_0a11:  call       "bool string.op_Equality(string, string)"
  IL_0a16:  brtrue     IL_0e18
  IL_0a1b:  br         IL_0e70
  IL_0a20:  ldarg.0
  IL_0a21:  ldstr      "2.5.29.20"
  IL_0a26:  call       "bool string.op_Equality(string, string)"
  IL_0a2b:  brtrue     IL_0e20
  IL_0a30:  br         IL_0e70
  IL_0a35:  ldarg.0
  IL_0a36:  ldstr      "2.23.140.1.2.1"
  IL_0a3b:  call       "bool string.op_Equality(string, string)"
  IL_0a40:  brtrue     IL_0e60
  IL_0a45:  br         IL_0e70
  IL_0a4a:  ldarg.0
  IL_0a4b:  ldstr      "2.23.140.1.2.2"
  IL_0a50:  call       "bool string.op_Equality(string, string)"
  IL_0a55:  brtrue     IL_0e68
  IL_0a5a:  br         IL_0e70
  IL_0a5f:  ldstr      "1.2.840.10040.4.1"
  IL_0a64:  stloc.0
  IL_0a65:  br         IL_0e76
  IL_0a6a:  ldstr      "1.2.840.10040.4.3"
  IL_0a6f:  stloc.0
  IL_0a70:  br         IL_0e76
  IL_0a75:  ldstr      "1.2.840.10045.2.1"
  IL_0a7a:  stloc.0
  IL_0a7b:  br         IL_0e76
  IL_0a80:  ldstr      "1.2.840.10045.1.1"
  IL_0a85:  stloc.0
  IL_0a86:  br         IL_0e76
  IL_0a8b:  ldstr      "1.2.840.10045.1.2"
  IL_0a90:  stloc.0
  IL_0a91:  br         IL_0e76
  IL_0a96:  ldstr      "1.2.840.10045.3.1.7"
  IL_0a9b:  stloc.0
  IL_0a9c:  br         IL_0e76
  IL_0aa1:  ldstr      "1.2.840.10045.4.1"
  IL_0aa6:  stloc.0
  IL_0aa7:  br         IL_0e76
  IL_0aac:  ldstr      "1.2.840.10045.4.3.2"
  IL_0ab1:  stloc.0
  IL_0ab2:  br         IL_0e76
  IL_0ab7:  ldstr      "1.2.840.10045.4.3.3"
  IL_0abc:  stloc.0
  IL_0abd:  br         IL_0e76
  IL_0ac2:  ldstr      "1.2.840.10045.4.3.4"
  IL_0ac7:  stloc.0
  IL_0ac8:  br         IL_0e76
  IL_0acd:  ldstr      "1.2.840.113549.1.1.1"
  IL_0ad2:  stloc.0
  IL_0ad3:  br         IL_0e76
  IL_0ad8:  ldstr      "1.2.840.113549.1.1.5"
  IL_0add:  stloc.0
  IL_0ade:  br         IL_0e76
  IL_0ae3:  ldstr      "1.2.840.113549.1.1.7"
  IL_0ae8:  stloc.0
  IL_0ae9:  br         IL_0e76
  IL_0aee:  ldstr      "1.2.840.113549.1.1.8"
  IL_0af3:  stloc.0
  IL_0af4:  br         IL_0e76
  IL_0af9:  ldstr      "1.2.840.113549.1.1.9"
  IL_0afe:  stloc.0
  IL_0aff:  br         IL_0e76
  IL_0b04:  ldstr      "1.2.840.113549.1.1.10"
  IL_0b09:  stloc.0
  IL_0b0a:  br         IL_0e76
  IL_0b0f:  ldstr      "1.2.840.113549.1.1.11"
  IL_0b14:  stloc.0
  IL_0b15:  br         IL_0e76
  IL_0b1a:  ldstr      "1.2.840.113549.1.1.12"
  IL_0b1f:  stloc.0
  IL_0b20:  br         IL_0e76
  IL_0b25:  ldstr      "1.2.840.113549.1.1.13"
  IL_0b2a:  stloc.0
  IL_0b2b:  br         IL_0e76
  IL_0b30:  ldstr      "1.2.840.113549.1.5.3"
  IL_0b35:  stloc.0
  IL_0b36:  br         IL_0e76
  IL_0b3b:  ldstr      "1.2.840.113549.1.5.10"
  IL_0b40:  stloc.0
  IL_0b41:  br         IL_0e76
  IL_0b46:  ldstr      "1.2.840.113549.1.5.11"
  IL_0b4b:  stloc.0
  IL_0b4c:  br         IL_0e76
  IL_0b51:  ldstr      "1.2.840.113549.1.5.12"
  IL_0b56:  stloc.0
  IL_0b57:  br         IL_0e76
  IL_0b5c:  ldstr      "1.2.840.113549.1.5.13"
  IL_0b61:  stloc.0
  IL_0b62:  br         IL_0e76
  IL_0b67:  ldstr      "1.2.840.113549.1.7.1"
  IL_0b6c:  stloc.0
  IL_0b6d:  br         IL_0e76
  IL_0b72:  ldstr      "1.2.840.113549.1.7.2"
  IL_0b77:  stloc.0
  IL_0b78:  br         IL_0e76
  IL_0b7d:  ldstr      "1.2.840.113549.1.7.3"
  IL_0b82:  stloc.0
  IL_0b83:  br         IL_0e76
  IL_0b88:  ldstr      "1.2.840.113549.1.7.6"
  IL_0b8d:  stloc.0
  IL_0b8e:  br         IL_0e76
  IL_0b93:  ldstr      "1.2.840.113549.1.9.1"
  IL_0b98:  stloc.0
  IL_0b99:  br         IL_0e76
  IL_0b9e:  ldstr      "1.2.840.113549.1.9.3"
  IL_0ba3:  stloc.0
  IL_0ba4:  br         IL_0e76
  IL_0ba9:  ldstr      "1.2.840.113549.1.9.4"
  IL_0bae:  stloc.0
  IL_0baf:  br         IL_0e76
  IL_0bb4:  ldstr      "1.2.840.113549.1.9.5"
  IL_0bb9:  stloc.0
  IL_0bba:  br         IL_0e76
  IL_0bbf:  ldstr      "1.2.840.113549.1.9.6"
  IL_0bc4:  stloc.0
  IL_0bc5:  br         IL_0e76
  IL_0bca:  ldstr      "1.2.840.113549.1.9.7"
  IL_0bcf:  stloc.0
  IL_0bd0:  br         IL_0e76
  IL_0bd5:  ldstr      "1.2.840.113549.1.9.14"
  IL_0bda:  stloc.0
  IL_0bdb:  br         IL_0e76
  IL_0be0:  ldstr      "1.2.840.113549.1.9.15"
  IL_0be5:  stloc.0
  IL_0be6:  br         IL_0e76
  IL_0beb:  ldstr      "1.2.840.113549.1.9.16.1.4"
  IL_0bf0:  stloc.0
  IL_0bf1:  br         IL_0e76
  IL_0bf6:  ldstr      "1.2.840.113549.1.9.16.2.12"
  IL_0bfb:  stloc.0
  IL_0bfc:  br         IL_0e76
  IL_0c01:  ldstr      "1.2.840.113549.1.9.16.2.14"
  IL_0c06:  stloc.0
  IL_0c07:  br         IL_0e76
  IL_0c0c:  ldstr      "1.2.840.113549.1.9.16.2.47"
  IL_0c11:  stloc.0
  IL_0c12:  br         IL_0e76
  IL_0c17:  ldstr      "1.2.840.113549.1.9.20"
  IL_0c1c:  stloc.0
  IL_0c1d:  br         IL_0e76
  IL_0c22:  ldstr      "1.2.840.113549.1.9.21"
  IL_0c27:  stloc.0
  IL_0c28:  br         IL_0e76
  IL_0c2d:  ldstr      "1.2.840.113549.1.9.22.1"
  IL_0c32:  stloc.0
  IL_0c33:  br         IL_0e76
  IL_0c38:  ldstr      "1.2.840.113549.1.12.1.3"
  IL_0c3d:  stloc.0
  IL_0c3e:  br         IL_0e76
  IL_0c43:  ldstr      "1.2.840.113549.1.12.1.5"
  IL_0c48:  stloc.0
  IL_0c49:  br         IL_0e76
  IL_0c4e:  ldstr      "1.2.840.113549.1.12.1.6"
  IL_0c53:  stloc.0
  IL_0c54:  br         IL_0e76
  IL_0c59:  ldstr      "1.2.840.113549.1.12.10.1.1"
  IL_0c5e:  stloc.0
  IL_0c5f:  br         IL_0e76
  IL_0c64:  ldstr      "1.2.840.113549.1.12.10.1.2"
  IL_0c69:  stloc.0
  IL_0c6a:  br         IL_0e76
  IL_0c6f:  ldstr      "1.2.840.113549.1.12.10.1.3"
  IL_0c74:  stloc.0
  IL_0c75:  br         IL_0e76
  IL_0c7a:  ldstr      "1.2.840.113549.1.12.10.1.5"
  IL_0c7f:  stloc.0
  IL_0c80:  br         IL_0e76
  IL_0c85:  ldstr      "1.2.840.113549.1.12.10.1.6"
  IL_0c8a:  stloc.0
  IL_0c8b:  br         IL_0e76
  IL_0c90:  ldstr      "1.2.840.113549.2.5"
  IL_0c95:  stloc.0
  IL_0c96:  br         IL_0e76
  IL_0c9b:  ldstr      "1.2.840.113549.2.7"
  IL_0ca0:  stloc.0
  IL_0ca1:  br         IL_0e76
  IL_0ca6:  ldstr      "1.2.840.113549.2.9"
  IL_0cab:  stloc.0
  IL_0cac:  br         IL_0e76
  IL_0cb1:  ldstr      "1.2.840.113549.2.10"
  IL_0cb6:  stloc.0
  IL_0cb7:  br         IL_0e76
  IL_0cbc:  ldstr      "1.2.840.113549.2.11"
  IL_0cc1:  stloc.0
  IL_0cc2:  br         IL_0e76
  IL_0cc7:  ldstr      "1.2.840.113549.3.2"
  IL_0ccc:  stloc.0
  IL_0ccd:  br         IL_0e76
  IL_0cd2:  ldstr      "1.2.840.113549.3.7"
  IL_0cd7:  stloc.0
  IL_0cd8:  br         IL_0e76
  IL_0cdd:  ldstr      "1.3.6.1.4.1.311.17.1"
  IL_0ce2:  stloc.0
  IL_0ce3:  br         IL_0e76
  IL_0ce8:  ldstr      "1.3.6.1.4.1.311.17.3.20"
  IL_0ced:  stloc.0
  IL_0cee:  br         IL_0e76
  IL_0cf3:  ldstr      "1.3.6.1.4.1.311.20.2.3"
  IL_0cf8:  stloc.0
  IL_0cf9:  br         IL_0e76
  IL_0cfe:  ldstr      "1.3.6.1.4.1.311.88.2.1"
  IL_0d03:  stloc.0
  IL_0d04:  br         IL_0e76
  IL_0d09:  ldstr      "1.3.6.1.4.1.311.88.2.2"
  IL_0d0e:  stloc.0
  IL_0d0f:  br         IL_0e76
  IL_0d14:  ldstr      "1.3.6.1.5.5.7.3.1"
  IL_0d19:  stloc.0
  IL_0d1a:  br         IL_0e76
  IL_0d1f:  ldstr      "1.3.6.1.5.5.7.3.2"
  IL_0d24:  stloc.0
  IL_0d25:  br         IL_0e76
  IL_0d2a:  ldstr      "1.3.6.1.5.5.7.3.3"
  IL_0d2f:  stloc.0
  IL_0d30:  br         IL_0e76
  IL_0d35:  ldstr      "1.3.6.1.5.5.7.3.4"
  IL_0d3a:  stloc.0
  IL_0d3b:  br         IL_0e76
  IL_0d40:  ldstr      "1.3.6.1.5.5.7.3.8"
  IL_0d45:  stloc.0
  IL_0d46:  br         IL_0e76
  IL_0d4b:  ldstr      "1.3.6.1.5.5.7.3.9"
  IL_0d50:  stloc.0
  IL_0d51:  br         IL_0e76
  IL_0d56:  ldstr      "1.3.6.1.5.5.7.6.2"
  IL_0d5b:  stloc.0
  IL_0d5c:  br         IL_0e76
  IL_0d61:  ldstr      "1.3.6.1.5.5.7.48.1"
  IL_0d66:  stloc.0
  IL_0d67:  br         IL_0e76
  IL_0d6c:  ldstr      "1.3.6.1.5.5.7.48.1.2"
  IL_0d71:  stloc.0
  IL_0d72:  br         IL_0e76
  IL_0d77:  ldstr      "1.3.6.1.5.5.7.48.2"
  IL_0d7c:  stloc.0
  IL_0d7d:  br         IL_0e76
  IL_0d82:  ldstr      "1.3.14.3.2.26"
  IL_0d87:  stloc.0
  IL_0d88:  br         IL_0e76
  IL_0d8d:  ldstr      "1.3.14.3.2.7"
  IL_0d92:  stloc.0
  IL_0d93:  br         IL_0e76
  IL_0d98:  ldstr      "1.3.132.0.34"
  IL_0d9d:  stloc.0
  IL_0d9e:  br         IL_0e76
  IL_0da3:  ldstr      "1.3.132.0.35"
  IL_0da8:  stloc.0
  IL_0da9:  br         IL_0e76
  IL_0dae:  ldstr      "2.5.4.3"
  IL_0db3:  stloc.0
  IL_0db4:  br         IL_0e76
  IL_0db9:  ldstr      "2.5.4.5"
  IL_0dbe:  stloc.0
  IL_0dbf:  br         IL_0e76
  IL_0dc4:  ldstr      "2.5.4.6"
  IL_0dc9:  stloc.0
  IL_0dca:  br         IL_0e76
  IL_0dcf:  ldstr      "2.5.4.7"
  IL_0dd4:  stloc.0
  IL_0dd5:  br         IL_0e76
  IL_0dda:  ldstr      "2.5.4.8"
  IL_0ddf:  stloc.0
  IL_0de0:  br         IL_0e76
  IL_0de5:  ldstr      "2.5.4.10"
  IL_0dea:  stloc.0
  IL_0deb:  br         IL_0e76
  IL_0df0:  ldstr      "2.5.4.11"
  IL_0df5:  stloc.0
  IL_0df6:  br.s       IL_0e76
  IL_0df8:  ldstr      "2.5.4.97"
  IL_0dfd:  stloc.0
  IL_0dfe:  br.s       IL_0e76
  IL_0e00:  ldstr      "2.5.29.14"
  IL_0e05:  stloc.0
  IL_0e06:  br.s       IL_0e76
  IL_0e08:  ldstr      "2.5.29.15"
  IL_0e0d:  stloc.0
  IL_0e0e:  br.s       IL_0e76
  IL_0e10:  ldstr      "2.5.29.17"
  IL_0e15:  stloc.0
  IL_0e16:  br.s       IL_0e76
  IL_0e18:  ldstr      "2.5.29.19"
  IL_0e1d:  stloc.0
  IL_0e1e:  br.s       IL_0e76
  IL_0e20:  ldstr      "2.5.29.20"
  IL_0e25:  stloc.0
  IL_0e26:  br.s       IL_0e76
  IL_0e28:  ldstr      "2.5.29.35"
  IL_0e2d:  stloc.0
  IL_0e2e:  br.s       IL_0e76
  IL_0e30:  ldstr      "2.16.840.1.101.3.4.1.2"
  IL_0e35:  stloc.0
  IL_0e36:  br.s       IL_0e76
  IL_0e38:  ldstr      "2.16.840.1.101.3.4.1.22"
  IL_0e3d:  stloc.0
  IL_0e3e:  br.s       IL_0e76
  IL_0e40:  ldstr      "2.16.840.1.101.3.4.1.42"
  IL_0e45:  stloc.0
  IL_0e46:  br.s       IL_0e76
  IL_0e48:  ldstr      "2.16.840.1.101.3.4.2.1"
  IL_0e4d:  stloc.0
  IL_0e4e:  br.s       IL_0e76
  IL_0e50:  ldstr      "2.16.840.1.101.3.4.2.2"
  IL_0e55:  stloc.0
  IL_0e56:  br.s       IL_0e76
  IL_0e58:  ldstr      "2.16.840.1.101.3.4.2.3"
  IL_0e5d:  stloc.0
  IL_0e5e:  br.s       IL_0e76
  IL_0e60:  ldstr      "2.23.140.1.2.1"
  IL_0e65:  stloc.0
  IL_0e66:  br.s       IL_0e76
  IL_0e68:  ldstr      "2.23.140.1.2.2"
  IL_0e6d:  stloc.0
  IL_0e6e:  br.s       IL_0e76
  IL_0e70:  ldstr      "default"
  IL_0e75:  stloc.0
  IL_0e76:  ldloc.0
  IL_0e77:  ret
}
""");
 
        comp = CreateCompilation(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size     4692 (0x1254)
  .maxstack  2
  .locals init (string V_0,
                uint V_1)
  IL_0000:  ldarg.0
  IL_0001:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  ldc.i4     0x77c08b8d
  IL_000d:  bgt.un     IL_030b
  IL_0012:  ldloc.1
  IL_0013:  ldc.i4     0x3343070f
  IL_0018:  bgt.un     IL_0188
  IL_001d:  ldloc.1
  IL_001e:  ldc.i4     0x23070056
  IL_0023:  bgt.un     IL_00d8
  IL_0028:  ldloc.1
  IL_0029:  ldc.i4     0x1bd19c31
  IL_002e:  bgt.un.s   IL_0084
  IL_0030:  ldloc.1
  IL_0031:  ldc.i4     0xafcddca
  IL_0036:  bgt.un.s   IL_005e
  IL_0038:  ldloc.1
  IL_0039:  ldc.i4     0x7fcd911
  IL_003e:  beq        IL_0c6d
  IL_0043:  ldloc.1
  IL_0044:  ldc.i4     0x9fcdc37
  IL_0049:  beq        IL_0c82
  IL_004e:  ldloc.1
  IL_004f:  ldc.i4     0xafcddca
  IL_0054:  beq        IL_0c97
  IL_0059:  br         IL_124c
  IL_005e:  ldloc.1
  IL_005f:  ldc.i4     0xbfcdf5d
  IL_0064:  beq        IL_0cac
  IL_0069:  ldloc.1
  IL_006a:  ldc.i4     0x11089fa9
  IL_006f:  beq        IL_094f
  IL_0074:  ldloc.1
  IL_0075:  ldc.i4     0x1bd19c31
  IL_007a:  beq        IL_0646
  IL_007f:  br         IL_124c
  IL_0084:  ldloc.1
  IL_0085:  ldc.i4     0x1e6ebeee
  IL_008a:  bgt.un.s   IL_00b2
  IL_008c:  ldloc.1
  IL_008d:  ldc.i4     0x1c6ebbc8
  IL_0092:  beq        IL_061c
  IL_0097:  ldloc.1
  IL_0098:  ldc.i4     0x1d3018af
  IL_009d:  beq        IL_069a
  IL_00a2:  ldloc.1
  IL_00a3:  ldc.i4     0x1e6ebeee
  IL_00a8:  beq        IL_0631
  IL_00ad:  br         IL_124c
  IL_00b2:  ldloc.1
  IL_00b3:  ldc.i4     0x1fdb884c
  IL_00b8:  beq        IL_0742
  IL_00bd:  ldloc.1
  IL_00be:  ldc.i4     0x20db89df
  IL_00c3:  beq        IL_072d
  IL_00c8:  ldloc.1
  IL_00c9:  ldc.i4     0x23070056
  IL_00ce:  beq        IL_06c4
  IL_00d3:  br         IL_124c
  IL_00d8:  ldloc.1
  IL_00d9:  ldc.i4     0x281396fb
  IL_00de:  bgt.un.s   IL_0134
  IL_00e0:  ldloc.1
  IL_00e1:  ldc.i4     0x25db91be
  IL_00e6:  bgt.un.s   IL_010e
  IL_00e8:  ldloc.1
  IL_00e9:  ldc.i4     0x23db8e98
  IL_00ee:  beq        IL_0703
  IL_00f3:  ldloc.1
  IL_00f4:  ldc.i4     0x240701e9
  IL_00f9:  beq        IL_06af
  IL_00fe:  ldloc.1
  IL_00ff:  ldc.i4     0x25db91be
  IL_0104:  beq        IL_0718
  IL_0109:  br         IL_124c
  IL_010e:  ldloc.1
  IL_010f:  ldc.i4     0x2607050f
  IL_0114:  beq        IL_06d9
  IL_0119:  ldloc.1
  IL_011a:  ldc.i4     0x27db94e4
  IL_011f:  beq        IL_06ee
  IL_0124:  ldloc.1
  IL_0125:  ldc.i4     0x281396fb
  IL_012a:  beq        IL_0b1d
  IL_012f:  br         IL_124c
  IL_0134:  ldloc.1
  IL_0135:  ldc.i4     0x3085083d
  IL_013a:  bgt.un.s   IL_0162
  IL_013c:  ldloc.1
  IL_013d:  ldc.i4     0x2913988e
  IL_0142:  beq        IL_0b32
  IL_0147:  ldloc.1
  IL_0148:  ldc.i4     0x2f8506aa
  IL_014d:  beq        IL_0c43
  IL_0152:  ldloc.1
  IL_0153:  ldc.i4     0x3085083d
  IL_0158:  beq        IL_0c58
  IL_015d:  br         IL_124c
  IL_0162:  ldloc.1
  IL_0163:  ldc.i4     0x3243057c
  IL_0168:  beq        IL_0b9b
  IL_016d:  ldloc.1
  IL_016e:  ldc.i4     0x332fa045
  IL_0173:  beq        IL_0c19
  IL_0178:  ldloc.1
  IL_0179:  ldc.i4     0x3343070f
  IL_017e:  beq        IL_0bb0
  IL_0183:  br         IL_124c
  IL_0188:  ldloc.1
  IL_0189:  ldc.i4     0x4f59e06b
  IL_018e:  bgt.un     IL_0243
  IL_0193:  ldloc.1
  IL_0194:  ldc.i4     0x3c43153a
  IL_0199:  bgt.un.s   IL_01ef
  IL_019b:  ldloc.1
  IL_019c:  ldc.i4     0x3b26d12c
  IL_01a1:  bgt.un.s   IL_01c9
  IL_01a3:  ldloc.1
  IL_01a4:  ldc.i4     0x36430bc8
  IL_01a9:  beq        IL_0b86
  IL_01ae:  ldloc.1
  IL_01af:  ldc.i4     0x38f1086c
  IL_01b4:  beq        IL_0d00
  IL_01b9:  ldloc.1
  IL_01ba:  ldc.i4     0x3b26d12c
  IL_01bf:  beq        IL_0979
  IL_01c4:  br         IL_124c
  IL_01c9:  ldloc.1
  IL_01ca:  ldc.i4     0x3b4313a7
  IL_01cf:  beq        IL_0b47
  IL_01d4:  ldloc.1
  IL_01d5:  ldc.i4     0x3c26d2bf
  IL_01da:  beq        IL_0964
  IL_01df:  ldloc.1
  IL_01e0:  ldc.i4     0x3c43153a
  IL_01e5:  beq        IL_0b5c
  IL_01ea:  br         IL_124c
  IL_01ef:  ldloc.1
  IL_01f0:  ldc.i4     0x4804a7c1
  IL_01f5:  bgt.un.s   IL_021d
  IL_01f7:  ldloc.1
  IL_01f8:  ldc.i4     0x3d4316cd
  IL_01fd:  beq        IL_0b71
  IL_0202:  ldloc.1
  IL_0203:  ldc.i4     0x4704a62e
  IL_0208:  beq        IL_0ceb
  IL_020d:  ldloc.1
  IL_020e:  ldc.i4     0x4804a7c1
  IL_0213:  beq        IL_0cd6
  IL_0218:  br         IL_124c
  IL_021d:  ldloc.1
  IL_021e:  ldc.i4     0x4e59ded8
  IL_0223:  beq        IL_07c0
  IL_0228:  ldloc.1
  IL_0229:  ldc.i4     0x4e5d1dcc
  IL_022e:  beq        IL_0bef
  IL_0233:  ldloc.1
  IL_0234:  ldc.i4     0x4f59e06b
  IL_0239:  beq        IL_07d5
  IL_023e:  br         IL_124c
  IL_0243:  ldloc.1
  IL_0244:  ldc.i4     0x595ddeb5
  IL_0249:  bgt.un.s   IL_029f
  IL_024b:  ldloc.1
  IL_024c:  ldc.i4     0x5159e391
  IL_0251:  bgt.un.s   IL_0279
  IL_0253:  ldloc.1
  IL_0254:  ldc.i4     0x4ff97a7f
  IL_0259:  beq        IL_0af3
  IL_025e:  ldloc.1
  IL_025f:  ldc.i4     0x5059e1fe
  IL_0264:  beq        IL_07ea
  IL_0269:  ldloc.1
  IL_026a:  ldc.i4     0x5159e391
  IL_026f:  beq        IL_07ff
  IL_0274:  br         IL_124c
  IL_0279:  ldloc.1
  IL_027a:  ldc.i4     0x53118aff
  IL_027f:  beq        IL_0b08
  IL_0284:  ldloc.1
  IL_0285:  ldc.i4     0x565dd9fc
  IL_028a:  beq        IL_065b
  IL_028f:  ldloc.1
  IL_0290:  ldc.i4     0x595ddeb5
  IL_0295:  beq        IL_0670
  IL_029a:  br         IL_124c
  IL_029f:  ldloc.1
  IL_02a0:  ldc.i4     0x6b2c3ae9
  IL_02a5:  bgt.un.s   IL_02cd
  IL_02a7:  ldloc.1
  IL_02a8:  ldc.i4     0x5a004a99
  IL_02ad:  beq        IL_0685
  IL_02b2:  ldloc.1
  IL_02b3:  ldc.i4     0x69d0cb33
  IL_02b8:  beq        IL_0d93
  IL_02bd:  ldloc.1
  IL_02be:  ldc.i4     0x6b2c3ae9
  IL_02c3:  beq        IL_0910
  IL_02c8:  br         IL_124c
  IL_02cd:  ldloc.1
  IL_02ce:  ldc.i4     0x777b7fe3
  IL_02d3:  bgt.un.s   IL_02f0
  IL_02d5:  ldloc.1
  IL_02d6:  ldc.i4     0x747ce41c
  IL_02db:  beq        IL_0bda
  IL_02e0:  ldloc.1
  IL_02e1:  ldc.i4     0x777b7fe3
  IL_02e6:  beq        IL_0e11
  IL_02eb:  br         IL_124c
  IL_02f0:  ldloc.1
  IL_02f1:  ldc.i4     0x777ce8d5
  IL_02f6:  beq        IL_0c04
  IL_02fb:  ldloc.1
  IL_02fc:  ldc.i4     0x77c08b8d
  IL_0301:  beq        IL_0bc5
  IL_0306:  br         IL_124c
  IL_030b:  ldloc.1
  IL_030c:  ldc.i4     0xafe050dc
  IL_0311:  bgt.un     IL_0499
  IL_0316:  ldloc.1
  IL_0317:  ldc.i4     0x95ab4e75
  IL_031c:  bgt.un     IL_03d1
  IL_0321:  ldloc.1
  IL_0322:  ldc.i4     0x8048ce1e
  IL_0327:  bgt.un.s   IL_037d
  IL_0329:  ldloc.1
  IL_032a:  ldc.i4     0x7becd51b
  IL_032f:  bgt.un.s   IL_0357
  IL_0331:  ldloc.1
  IL_0332:  ldc.i4     0x787b8176
  IL_0337:  beq        IL_0e26
  IL_033c:  ldloc.1
  IL_033d:  ldc.i4     0x7aecd388
  IL_0342:  beq        IL_083e
  IL_0347:  ldloc.1
  IL_0348:  ldc.i4     0x7becd51b
  IL_034d:  beq        IL_0829
  IL_0352:  br         IL_124c
  IL_0357:  ldloc.1
  IL_0358:  ldc.i4     0x7cecd6ae
  IL_035d:  beq        IL_0814
  IL_0362:  ldloc.1
  IL_0363:  ldc.i4     0x7fecdb67
  IL_0368:  beq        IL_0853
  IL_036d:  ldloc.1
  IL_036e:  ldc.i4     0x8048ce1e
  IL_0373:  beq        IL_0ab4
  IL_0378:  br         IL_124c
  IL_037d:  ldloc.1
  IL_037e:  ldc.i4     0x93ab4b4f
  IL_0383:  bgt.un.s   IL_03ab
  IL_0385:  ldloc.1
  IL_0386:  ldc.i4     0x8548d5fd
  IL_038b:  beq        IL_0ac9
  IL_0390:  ldloc.1
  IL_0391:  ldc.i4     0x92ab49bc
  IL_0396:  beq        IL_0757
  IL_039b:  ldloc.1
  IL_039c:  ldc.i4     0x93ab4b4f
  IL_03a1:  beq        IL_076c
  IL_03a6:  br         IL_124c
  IL_03ab:  ldloc.1
  IL_03ac:  ldc.i4     0x94ab4ce2
  IL_03b1:  beq        IL_0781
  IL_03b6:  ldloc.1
  IL_03b7:  ldc.i4     0x94af9293
  IL_03bc:  beq        IL_0da8
  IL_03c1:  ldloc.1
  IL_03c2:  ldc.i4     0x95ab4e75
  IL_03c7:  beq        IL_0796
  IL_03cc:  br         IL_124c
  IL_03d1:  ldloc.1
  IL_03d2:  ldc.i4     0xa401384d
  IL_03d7:  bgt.un.s   IL_042d
  IL_03d9:  ldloc.1
  IL_03da:  ldc.i4     0x9e012edb
  IL_03df:  bgt.un.s   IL_0407
  IL_03e1:  ldloc.1
  IL_03e2:  ldc.i4     0x9a7462aa
  IL_03e7:  beq        IL_0c2e
  IL_03ec:  ldloc.1
  IL_03ed:  ldc.i4     0x9cbea9b5
  IL_03f2:  beq        IL_0dbd
  IL_03f7:  ldloc.1
  IL_03f8:  ldc.i4     0x9e012edb
  IL_03fd:  beq        IL_0925
  IL_0402:  br         IL_124c
  IL_0407:  ldloc.1
  IL_0408:  ldc.i4     0xa2882d34
  IL_040d:  beq        IL_0a8a
  IL_0412:  ldloc.1
  IL_0413:  ldc.i4     0xa3882ec7
  IL_0418:  beq        IL_0a9f
  IL_041d:  ldloc.1
  IL_041e:  ldc.i4     0xa401384d
  IL_0423:  beq        IL_093a
  IL_0428:  br         IL_124c
  IL_042d:  ldloc.1
  IL_042e:  ldc.i4     0xace04c23
  IL_0433:  bgt.un.s   IL_045b
  IL_0435:  ldloc.1
  IL_0436:  ldc.i4     0xabd2b2a0
  IL_043b:  beq        IL_09cd
  IL_0440:  ldloc.1
  IL_0441:  ldc.i4     0xabe04a90
  IL_0446:  beq        IL_08a7
  IL_044b:  ldloc.1
  IL_044c:  ldc.i4     0xace04c23
  IL_0451:  beq        IL_0892
  IL_0456:  br         IL_124c
  IL_045b:  ldloc.1
  IL_045c:  ldc.i4     0xaed2b759
  IL_0461:  bgt.un.s   IL_047e
  IL_0463:  ldloc.1
  IL_0464:  ldc.i4     0xade04db6
  IL_0469:  beq        IL_08d1
  IL_046e:  ldloc.1
  IL_046f:  ldc.i4     0xaed2b759
  IL_0474:  beq        IL_09b8
  IL_0479:  br         IL_124c
  IL_047e:  ldloc.1
  IL_047f:  ldc.i4     0xaee04f49
  IL_0484:  beq        IL_08bc
  IL_0489:  ldloc.1
  IL_048a:  ldc.i4     0xafe050dc
  IL_048f:  beq        IL_0868
  IL_0494:  br         IL_124c
  IL_0499:  ldloc.1
  IL_049a:  ldc.i4     0xdc91c9af
  IL_049f:  bgt.un     IL_0554
  IL_04a4:  ldloc.1
  IL_04a5:  ldc.i4     0xd007f6d9
  IL_04aa:  bgt.un.s   IL_0500
  IL_04ac:  ldloc.1
  IL_04ad:  ldc.i4     0xc61f5d38
  IL_04b2:  bgt.un.s   IL_04da
  IL_04b4:  ldloc.1
  IL_04b5:  ldc.i4     0xb0d2ba7f
  IL_04ba:  beq        IL_09a3
  IL_04bf:  ldloc.1
  IL_04c0:  ldc.i4     0xb1e05402
  IL_04c5:  beq        IL_087d
  IL_04ca:  ldloc.1
  IL_04cb:  ldc.i4     0xc61f5d38
  IL_04d0:  beq        IL_08e6
  IL_04d5:  br         IL_124c
  IL_04da:  ldloc.1
  IL_04db:  ldc.i4     0xc71f5ecb
  IL_04e0:  beq        IL_08fb
  IL_04e5:  ldloc.1
  IL_04e6:  ldc.i4     0xcf05b6af
  IL_04eb:  beq        IL_0d7e
  IL_04f0:  ldloc.1
  IL_04f1:  ldc.i4     0xd007f6d9
  IL_04f6:  beq        IL_0d69
  IL_04fb:  br         IL_124c
  IL_0500:  ldloc.1
  IL_0501:  ldc.i4     0xd30a3a29
  IL_0506:  bgt.un.s   IL_052e
  IL_0508:  ldloc.1
  IL_0509:  ldc.i4     0xd10a3703
  IL_050e:  beq        IL_0d3f
  IL_0513:  ldloc.1
  IL_0514:  ldc.i4     0xd20a3896
  IL_0519:  beq        IL_0d15
  IL_051e:  ldloc.1
  IL_051f:  ldc.i4     0xd30a3a29
  IL_0524:  beq        IL_0d2a
  IL_0529:  br         IL_124c
  IL_052e:  ldloc.1
  IL_052f:  ldc.i4     0xd53b501e
  IL_0534:  beq        IL_07ab
  IL_0539:  ldloc.1
  IL_053a:  ldc.i4     0xdc6685e0
  IL_053f:  beq        IL_098e
  IL_0544:  ldloc.1
  IL_0545:  ldc.i4     0xdc91c9af
  IL_054a:  beq        IL_0dd2
  IL_054f:  br         IL_124c
  IL_0554:  ldloc.1
  IL_0555:  ldc.i4     0xe0252800
  IL_055a:  bgt.un.s   IL_05b0
  IL_055c:  ldloc.1
  IL_055d:  ldc.i4     0xde91ccd5
  IL_0562:  bgt.un.s   IL_058a
  IL_0564:  ldloc.1
  IL_0565:  ldc.i4     0xdd91cb42
  IL_056a:  beq        IL_0de7
  IL_056f:  ldloc.1
  IL_0570:  ldc.i4     0xde178c28
  IL_0575:  beq        IL_09e2
  IL_057a:  ldloc.1
  IL_057b:  ldc.i4     0xde91ccd5
  IL_0580:  beq        IL_0dfc
  IL_0585:  br         IL_124c
  IL_058a:  ldloc.1
  IL_058b:  ldc.i4     0xdf0a4d0d
  IL_0590:  beq        IL_0d54
  IL_0595:  ldloc.1
  IL_0596:  ldc.i4     0xe0178f4e
  IL_059b:  beq        IL_0a0c
  IL_05a0:  ldloc.1
  IL_05a1:  ldc.i4     0xe0252800
  IL_05a6:  beq        IL_0a4b
  IL_05ab:  br         IL_124c
  IL_05b0:  ldloc.1
  IL_05b1:  ldc.i4     0xe2252b26
  IL_05b6:  bgt.un.s   IL_05de
  IL_05b8:  ldloc.1
  IL_05b9:  ldc.i4     0xe11790e1
  IL_05be:  beq        IL_09f7
  IL_05c3:  ldloc.1
  IL_05c4:  ldc.i4     0xe2179274
  IL_05c9:  beq        IL_0a21
  IL_05ce:  ldloc.1
  IL_05cf:  ldc.i4     0xe2252b26
  IL_05d4:  beq        IL_0a60
  IL_05d9:  br         IL_124c
  IL_05de:  ldloc.1
  IL_05df:  ldc.i4     0xec253ae4
  IL_05e4:  bgt.un.s   IL_0601
  IL_05e6:  ldloc.1
  IL_05e7:  ldc.i4     0xe517972d
  IL_05ec:  beq        IL_0a36
  IL_05f1:  ldloc.1
  IL_05f2:  ldc.i4     0xec253ae4
  IL_05f7:  beq        IL_0a75
  IL_05fc:  br         IL_124c
  IL_0601:  ldloc.1
  IL_0602:  ldc.i4     0xf9eeda43
  IL_0607:  beq        IL_0ade
  IL_060c:  ldloc.1
  IL_060d:  ldc.i4     0xfcfcc7c0
  IL_0612:  beq        IL_0cc1
  IL_0617:  br         IL_124c
  IL_061c:  ldarg.0
  IL_061d:  ldstr      "1.2.840.10040.4.1"
  IL_0622:  call       "bool string.op_Equality(string, string)"
  IL_0627:  brtrue     IL_0e3b
  IL_062c:  br         IL_124c
  IL_0631:  ldarg.0
  IL_0632:  ldstr      "1.2.840.10040.4.3"
  IL_0637:  call       "bool string.op_Equality(string, string)"
  IL_063c:  brtrue     IL_0e46
  IL_0641:  br         IL_124c
  IL_0646:  ldarg.0
  IL_0647:  ldstr      "1.2.840.10045.2.1"
  IL_064c:  call       "bool string.op_Equality(string, string)"
  IL_0651:  brtrue     IL_0e51
  IL_0656:  br         IL_124c
  IL_065b:  ldarg.0
  IL_065c:  ldstr      "1.2.840.10045.1.1"
  IL_0661:  call       "bool string.op_Equality(string, string)"
  IL_0666:  brtrue     IL_0e5c
  IL_066b:  br         IL_124c
  IL_0670:  ldarg.0
  IL_0671:  ldstr      "1.2.840.10045.1.2"
  IL_0676:  call       "bool string.op_Equality(string, string)"
  IL_067b:  brtrue     IL_0e67
  IL_0680:  br         IL_124c
  IL_0685:  ldarg.0
  IL_0686:  ldstr      "1.2.840.10045.3.1.7"
  IL_068b:  call       "bool string.op_Equality(string, string)"
  IL_0690:  brtrue     IL_0e72
  IL_0695:  br         IL_124c
  IL_069a:  ldarg.0
  IL_069b:  ldstr      "1.2.840.10045.4.1"
  IL_06a0:  call       "bool string.op_Equality(string, string)"
  IL_06a5:  brtrue     IL_0e7d
  IL_06aa:  br         IL_124c
  IL_06af:  ldarg.0
  IL_06b0:  ldstr      "1.2.840.10045.4.3.2"
  IL_06b5:  call       "bool string.op_Equality(string, string)"
  IL_06ba:  brtrue     IL_0e88
  IL_06bf:  br         IL_124c
  IL_06c4:  ldarg.0
  IL_06c5:  ldstr      "1.2.840.10045.4.3.3"
  IL_06ca:  call       "bool string.op_Equality(string, string)"
  IL_06cf:  brtrue     IL_0e93
  IL_06d4:  br         IL_124c
  IL_06d9:  ldarg.0
  IL_06da:  ldstr      "1.2.840.10045.4.3.4"
  IL_06df:  call       "bool string.op_Equality(string, string)"
  IL_06e4:  brtrue     IL_0e9e
  IL_06e9:  br         IL_124c
  IL_06ee:  ldarg.0
  IL_06ef:  ldstr      "1.2.840.113549.1.1.1"
  IL_06f4:  call       "bool string.op_Equality(string, string)"
  IL_06f9:  brtrue     IL_0ea9
  IL_06fe:  br         IL_124c
  IL_0703:  ldarg.0
  IL_0704:  ldstr      "1.2.840.113549.1.1.5"
  IL_0709:  call       "bool string.op_Equality(string, string)"
  IL_070e:  brtrue     IL_0eb4
  IL_0713:  br         IL_124c
  IL_0718:  ldarg.0
  IL_0719:  ldstr      "1.2.840.113549.1.1.7"
  IL_071e:  call       "bool string.op_Equality(string, string)"
  IL_0723:  brtrue     IL_0ebf
  IL_0728:  br         IL_124c
  IL_072d:  ldarg.0
  IL_072e:  ldstr      "1.2.840.113549.1.1.8"
  IL_0733:  call       "bool string.op_Equality(string, string)"
  IL_0738:  brtrue     IL_0eca
  IL_073d:  br         IL_124c
  IL_0742:  ldarg.0
  IL_0743:  ldstr      "1.2.840.113549.1.1.9"
  IL_0748:  call       "bool string.op_Equality(string, string)"
  IL_074d:  brtrue     IL_0ed5
  IL_0752:  br         IL_124c
  IL_0757:  ldarg.0
  IL_0758:  ldstr      "1.2.840.113549.1.1.10"
  IL_075d:  call       "bool string.op_Equality(string, string)"
  IL_0762:  brtrue     IL_0ee0
  IL_0767:  br         IL_124c
  IL_076c:  ldarg.0
  IL_076d:  ldstr      "1.2.840.113549.1.1.11"
  IL_0772:  call       "bool string.op_Equality(string, string)"
  IL_0777:  brtrue     IL_0eeb
  IL_077c:  br         IL_124c
  IL_0781:  ldarg.0
  IL_0782:  ldstr      "1.2.840.113549.1.1.12"
  IL_0787:  call       "bool string.op_Equality(string, string)"
  IL_078c:  brtrue     IL_0ef6
  IL_0791:  br         IL_124c
  IL_0796:  ldarg.0
  IL_0797:  ldstr      "1.2.840.113549.1.1.13"
  IL_079c:  call       "bool string.op_Equality(string, string)"
  IL_07a1:  brtrue     IL_0f01
  IL_07a6:  br         IL_124c
  IL_07ab:  ldarg.0
  IL_07ac:  ldstr      "1.2.840.113549.1.5.3"
  IL_07b1:  call       "bool string.op_Equality(string, string)"
  IL_07b6:  brtrue     IL_0f0c
  IL_07bb:  br         IL_124c
  IL_07c0:  ldarg.0
  IL_07c1:  ldstr      "1.2.840.113549.1.5.10"
  IL_07c6:  call       "bool string.op_Equality(string, string)"
  IL_07cb:  brtrue     IL_0f17
  IL_07d0:  br         IL_124c
  IL_07d5:  ldarg.0
  IL_07d6:  ldstr      "1.2.840.113549.1.5.11"
  IL_07db:  call       "bool string.op_Equality(string, string)"
  IL_07e0:  brtrue     IL_0f22
  IL_07e5:  br         IL_124c
  IL_07ea:  ldarg.0
  IL_07eb:  ldstr      "1.2.840.113549.1.5.12"
  IL_07f0:  call       "bool string.op_Equality(string, string)"
  IL_07f5:  brtrue     IL_0f2d
  IL_07fa:  br         IL_124c
  IL_07ff:  ldarg.0
  IL_0800:  ldstr      "1.2.840.113549.1.5.13"
  IL_0805:  call       "bool string.op_Equality(string, string)"
  IL_080a:  brtrue     IL_0f38
  IL_080f:  br         IL_124c
  IL_0814:  ldarg.0
  IL_0815:  ldstr      "1.2.840.113549.1.7.1"
  IL_081a:  call       "bool string.op_Equality(string, string)"
  IL_081f:  brtrue     IL_0f43
  IL_0824:  br         IL_124c
  IL_0829:  ldarg.0
  IL_082a:  ldstr      "1.2.840.113549.1.7.2"
  IL_082f:  call       "bool string.op_Equality(string, string)"
  IL_0834:  brtrue     IL_0f4e
  IL_0839:  br         IL_124c
  IL_083e:  ldarg.0
  IL_083f:  ldstr      "1.2.840.113549.1.7.3"
  IL_0844:  call       "bool string.op_Equality(string, string)"
  IL_0849:  brtrue     IL_0f59
  IL_084e:  br         IL_124c
  IL_0853:  ldarg.0
  IL_0854:  ldstr      "1.2.840.113549.1.7.6"
  IL_0859:  call       "bool string.op_Equality(string, string)"
  IL_085e:  brtrue     IL_0f64
  IL_0863:  br         IL_124c
  IL_0868:  ldarg.0
  IL_0869:  ldstr      "1.2.840.113549.1.9.1"
  IL_086e:  call       "bool string.op_Equality(string, string)"
  IL_0873:  brtrue     IL_0f6f
  IL_0878:  br         IL_124c
  IL_087d:  ldarg.0
  IL_087e:  ldstr      "1.2.840.113549.1.9.3"
  IL_0883:  call       "bool string.op_Equality(string, string)"
  IL_0888:  brtrue     IL_0f7a
  IL_088d:  br         IL_124c
  IL_0892:  ldarg.0
  IL_0893:  ldstr      "1.2.840.113549.1.9.4"
  IL_0898:  call       "bool string.op_Equality(string, string)"
  IL_089d:  brtrue     IL_0f85
  IL_08a2:  br         IL_124c
  IL_08a7:  ldarg.0
  IL_08a8:  ldstr      "1.2.840.113549.1.9.5"
  IL_08ad:  call       "bool string.op_Equality(string, string)"
  IL_08b2:  brtrue     IL_0f90
  IL_08b7:  br         IL_124c
  IL_08bc:  ldarg.0
  IL_08bd:  ldstr      "1.2.840.113549.1.9.6"
  IL_08c2:  call       "bool string.op_Equality(string, string)"
  IL_08c7:  brtrue     IL_0f9b
  IL_08cc:  br         IL_124c
  IL_08d1:  ldarg.0
  IL_08d2:  ldstr      "1.2.840.113549.1.9.7"
  IL_08d7:  call       "bool string.op_Equality(string, string)"
  IL_08dc:  brtrue     IL_0fa6
  IL_08e1:  br         IL_124c
  IL_08e6:  ldarg.0
  IL_08e7:  ldstr      "1.2.840.113549.1.9.14"
  IL_08ec:  call       "bool string.op_Equality(string, string)"
  IL_08f1:  brtrue     IL_0fb1
  IL_08f6:  br         IL_124c
  IL_08fb:  ldarg.0
  IL_08fc:  ldstr      "1.2.840.113549.1.9.15"
  IL_0901:  call       "bool string.op_Equality(string, string)"
  IL_0906:  brtrue     IL_0fbc
  IL_090b:  br         IL_124c
  IL_0910:  ldarg.0
  IL_0911:  ldstr      "1.2.840.113549.1.9.16.1.4"
  IL_0916:  call       "bool string.op_Equality(string, string)"
  IL_091b:  brtrue     IL_0fc7
  IL_0920:  br         IL_124c
  IL_0925:  ldarg.0
  IL_0926:  ldstr      "1.2.840.113549.1.9.16.2.12"
  IL_092b:  call       "bool string.op_Equality(string, string)"
  IL_0930:  brtrue     IL_0fd2
  IL_0935:  br         IL_124c
  IL_093a:  ldarg.0
  IL_093b:  ldstr      "1.2.840.113549.1.9.16.2.14"
  IL_0940:  call       "bool string.op_Equality(string, string)"
  IL_0945:  brtrue     IL_0fdd
  IL_094a:  br         IL_124c
  IL_094f:  ldarg.0
  IL_0950:  ldstr      "1.2.840.113549.1.9.16.2.47"
  IL_0955:  call       "bool string.op_Equality(string, string)"
  IL_095a:  brtrue     IL_0fe8
  IL_095f:  br         IL_124c
  IL_0964:  ldarg.0
  IL_0965:  ldstr      "1.2.840.113549.1.9.20"
  IL_096a:  call       "bool string.op_Equality(string, string)"
  IL_096f:  brtrue     IL_0ff3
  IL_0974:  br         IL_124c
  IL_0979:  ldarg.0
  IL_097a:  ldstr      "1.2.840.113549.1.9.21"
  IL_097f:  call       "bool string.op_Equality(string, string)"
  IL_0984:  brtrue     IL_0ffe
  IL_0989:  br         IL_124c
  IL_098e:  ldarg.0
  IL_098f:  ldstr      "1.2.840.113549.1.9.22.1"
  IL_0994:  call       "bool string.op_Equality(string, string)"
  IL_0999:  brtrue     IL_1009
  IL_099e:  br         IL_124c
  IL_09a3:  ldarg.0
  IL_09a4:  ldstr      "1.2.840.113549.1.12.1.3"
  IL_09a9:  call       "bool string.op_Equality(string, string)"
  IL_09ae:  brtrue     IL_1014
  IL_09b3:  br         IL_124c
  IL_09b8:  ldarg.0
  IL_09b9:  ldstr      "1.2.840.113549.1.12.1.5"
  IL_09be:  call       "bool string.op_Equality(string, string)"
  IL_09c3:  brtrue     IL_101f
  IL_09c8:  br         IL_124c
  IL_09cd:  ldarg.0
  IL_09ce:  ldstr      "1.2.840.113549.1.12.1.6"
  IL_09d3:  call       "bool string.op_Equality(string, string)"
  IL_09d8:  brtrue     IL_102a
  IL_09dd:  br         IL_124c
  IL_09e2:  ldarg.0
  IL_09e3:  ldstr      "1.2.840.113549.1.12.10.1.1"
  IL_09e8:  call       "bool string.op_Equality(string, string)"
  IL_09ed:  brtrue     IL_1035
  IL_09f2:  br         IL_124c
  IL_09f7:  ldarg.0
  IL_09f8:  ldstr      "1.2.840.113549.1.12.10.1.2"
  IL_09fd:  call       "bool string.op_Equality(string, string)"
  IL_0a02:  brtrue     IL_1040
  IL_0a07:  br         IL_124c
  IL_0a0c:  ldarg.0
  IL_0a0d:  ldstr      "1.2.840.113549.1.12.10.1.3"
  IL_0a12:  call       "bool string.op_Equality(string, string)"
  IL_0a17:  brtrue     IL_104b
  IL_0a1c:  br         IL_124c
  IL_0a21:  ldarg.0
  IL_0a22:  ldstr      "1.2.840.113549.1.12.10.1.5"
  IL_0a27:  call       "bool string.op_Equality(string, string)"
  IL_0a2c:  brtrue     IL_1056
  IL_0a31:  br         IL_124c
  IL_0a36:  ldarg.0
  IL_0a37:  ldstr      "1.2.840.113549.1.12.10.1.6"
  IL_0a3c:  call       "bool string.op_Equality(string, string)"
  IL_0a41:  brtrue     IL_1061
  IL_0a46:  br         IL_124c
  IL_0a4b:  ldarg.0
  IL_0a4c:  ldstr      "1.2.840.113549.2.5"
  IL_0a51:  call       "bool string.op_Equality(string, string)"
  IL_0a56:  brtrue     IL_106c
  IL_0a5b:  br         IL_124c
  IL_0a60:  ldarg.0
  IL_0a61:  ldstr      "1.2.840.113549.2.7"
  IL_0a66:  call       "bool string.op_Equality(string, string)"
  IL_0a6b:  brtrue     IL_1077
  IL_0a70:  br         IL_124c
  IL_0a75:  ldarg.0
  IL_0a76:  ldstr      "1.2.840.113549.2.9"
  IL_0a7b:  call       "bool string.op_Equality(string, string)"
  IL_0a80:  brtrue     IL_1082
  IL_0a85:  br         IL_124c
  IL_0a8a:  ldarg.0
  IL_0a8b:  ldstr      "1.2.840.113549.2.10"
  IL_0a90:  call       "bool string.op_Equality(string, string)"
  IL_0a95:  brtrue     IL_108d
  IL_0a9a:  br         IL_124c
  IL_0a9f:  ldarg.0
  IL_0aa0:  ldstr      "1.2.840.113549.2.11"
  IL_0aa5:  call       "bool string.op_Equality(string, string)"
  IL_0aaa:  brtrue     IL_1098
  IL_0aaf:  br         IL_124c
  IL_0ab4:  ldarg.0
  IL_0ab5:  ldstr      "1.2.840.113549.3.2"
  IL_0aba:  call       "bool string.op_Equality(string, string)"
  IL_0abf:  brtrue     IL_10a3
  IL_0ac4:  br         IL_124c
  IL_0ac9:  ldarg.0
  IL_0aca:  ldstr      "1.2.840.113549.3.7"
  IL_0acf:  call       "bool string.op_Equality(string, string)"
  IL_0ad4:  brtrue     IL_10ae
  IL_0ad9:  br         IL_124c
  IL_0ade:  ldarg.0
  IL_0adf:  ldstr      "1.3.6.1.4.1.311.17.1"
  IL_0ae4:  call       "bool string.op_Equality(string, string)"
  IL_0ae9:  brtrue     IL_10b9
  IL_0aee:  br         IL_124c
  IL_0af3:  ldarg.0
  IL_0af4:  ldstr      "1.3.6.1.4.1.311.17.3.20"
  IL_0af9:  call       "bool string.op_Equality(string, string)"
  IL_0afe:  brtrue     IL_10c4
  IL_0b03:  br         IL_124c
  IL_0b08:  ldarg.0
  IL_0b09:  ldstr      "1.3.6.1.4.1.311.20.2.3"
  IL_0b0e:  call       "bool string.op_Equality(string, string)"
  IL_0b13:  brtrue     IL_10cf
  IL_0b18:  br         IL_124c
  IL_0b1d:  ldarg.0
  IL_0b1e:  ldstr      "1.3.6.1.4.1.311.88.2.1"
  IL_0b23:  call       "bool string.op_Equality(string, string)"
  IL_0b28:  brtrue     IL_10da
  IL_0b2d:  br         IL_124c
  IL_0b32:  ldarg.0
  IL_0b33:  ldstr      "1.3.6.1.4.1.311.88.2.2"
  IL_0b38:  call       "bool string.op_Equality(string, string)"
  IL_0b3d:  brtrue     IL_10e5
  IL_0b42:  br         IL_124c
  IL_0b47:  ldarg.0
  IL_0b48:  ldstr      "1.3.6.1.5.5.7.3.1"
  IL_0b4d:  call       "bool string.op_Equality(string, string)"
  IL_0b52:  brtrue     IL_10f0
  IL_0b57:  br         IL_124c
  IL_0b5c:  ldarg.0
  IL_0b5d:  ldstr      "1.3.6.1.5.5.7.3.2"
  IL_0b62:  call       "bool string.op_Equality(string, string)"
  IL_0b67:  brtrue     IL_10fb
  IL_0b6c:  br         IL_124c
  IL_0b71:  ldarg.0
  IL_0b72:  ldstr      "1.3.6.1.5.5.7.3.3"
  IL_0b77:  call       "bool string.op_Equality(string, string)"
  IL_0b7c:  brtrue     IL_1106
  IL_0b81:  br         IL_124c
  IL_0b86:  ldarg.0
  IL_0b87:  ldstr      "1.3.6.1.5.5.7.3.4"
  IL_0b8c:  call       "bool string.op_Equality(string, string)"
  IL_0b91:  brtrue     IL_1111
  IL_0b96:  br         IL_124c
  IL_0b9b:  ldarg.0
  IL_0b9c:  ldstr      "1.3.6.1.5.5.7.3.8"
  IL_0ba1:  call       "bool string.op_Equality(string, string)"
  IL_0ba6:  brtrue     IL_111c
  IL_0bab:  br         IL_124c
  IL_0bb0:  ldarg.0
  IL_0bb1:  ldstr      "1.3.6.1.5.5.7.3.9"
  IL_0bb6:  call       "bool string.op_Equality(string, string)"
  IL_0bbb:  brtrue     IL_1127
  IL_0bc0:  br         IL_124c
  IL_0bc5:  ldarg.0
  IL_0bc6:  ldstr      "1.3.6.1.5.5.7.6.2"
  IL_0bcb:  call       "bool string.op_Equality(string, string)"
  IL_0bd0:  brtrue     IL_1132
  IL_0bd5:  br         IL_124c
  IL_0bda:  ldarg.0
  IL_0bdb:  ldstr      "1.3.6.1.5.5.7.48.1"
  IL_0be0:  call       "bool string.op_Equality(string, string)"
  IL_0be5:  brtrue     IL_113d
  IL_0bea:  br         IL_124c
  IL_0bef:  ldarg.0
  IL_0bf0:  ldstr      "1.3.6.1.5.5.7.48.1.2"
  IL_0bf5:  call       "bool string.op_Equality(string, string)"
  IL_0bfa:  brtrue     IL_1148
  IL_0bff:  br         IL_124c
  IL_0c04:  ldarg.0
  IL_0c05:  ldstr      "1.3.6.1.5.5.7.48.2"
  IL_0c0a:  call       "bool string.op_Equality(string, string)"
  IL_0c0f:  brtrue     IL_1153
  IL_0c14:  br         IL_124c
  IL_0c19:  ldarg.0
  IL_0c1a:  ldstr      "1.3.14.3.2.26"
  IL_0c1f:  call       "bool string.op_Equality(string, string)"
  IL_0c24:  brtrue     IL_115e
  IL_0c29:  br         IL_124c
  IL_0c2e:  ldarg.0
  IL_0c2f:  ldstr      "1.3.14.3.2.7"
  IL_0c34:  call       "bool string.op_Equality(string, string)"
  IL_0c39:  brtrue     IL_1169
  IL_0c3e:  br         IL_124c
  IL_0c43:  ldarg.0
  IL_0c44:  ldstr      "1.3.132.0.34"
  IL_0c49:  call       "bool string.op_Equality(string, string)"
  IL_0c4e:  brtrue     IL_1174
  IL_0c53:  br         IL_124c
  IL_0c58:  ldarg.0
  IL_0c59:  ldstr      "1.3.132.0.35"
  IL_0c5e:  call       "bool string.op_Equality(string, string)"
  IL_0c63:  brtrue     IL_117f
  IL_0c68:  br         IL_124c
  IL_0c6d:  ldarg.0
  IL_0c6e:  ldstr      "2.5.4.3"
  IL_0c73:  call       "bool string.op_Equality(string, string)"
  IL_0c78:  brtrue     IL_118a
  IL_0c7d:  br         IL_124c
  IL_0c82:  ldarg.0
  IL_0c83:  ldstr      "2.5.4.5"
  IL_0c88:  call       "bool string.op_Equality(string, string)"
  IL_0c8d:  brtrue     IL_1195
  IL_0c92:  br         IL_124c
  IL_0c97:  ldarg.0
  IL_0c98:  ldstr      "2.5.4.6"
  IL_0c9d:  call       "bool string.op_Equality(string, string)"
  IL_0ca2:  brtrue     IL_11a0
  IL_0ca7:  br         IL_124c
  IL_0cac:  ldarg.0
  IL_0cad:  ldstr      "2.5.4.7"
  IL_0cb2:  call       "bool string.op_Equality(string, string)"
  IL_0cb7:  brtrue     IL_11ab
  IL_0cbc:  br         IL_124c
  IL_0cc1:  ldarg.0
  IL_0cc2:  ldstr      "2.5.4.8"
  IL_0cc7:  call       "bool string.op_Equality(string, string)"
  IL_0ccc:  brtrue     IL_11b6
  IL_0cd1:  br         IL_124c
  IL_0cd6:  ldarg.0
  IL_0cd7:  ldstr      "2.5.4.10"
  IL_0cdc:  call       "bool string.op_Equality(string, string)"
  IL_0ce1:  brtrue     IL_11c1
  IL_0ce6:  br         IL_124c
  IL_0ceb:  ldarg.0
  IL_0cec:  ldstr      "2.5.4.11"
  IL_0cf1:  call       "bool string.op_Equality(string, string)"
  IL_0cf6:  brtrue     IL_11cc
  IL_0cfb:  br         IL_124c
  IL_0d00:  ldarg.0
  IL_0d01:  ldstr      "2.5.4.97"
  IL_0d06:  call       "bool string.op_Equality(string, string)"
  IL_0d0b:  brtrue     IL_11d4
  IL_0d10:  br         IL_124c
  IL_0d15:  ldarg.0
  IL_0d16:  ldstr      "2.5.29.14"
  IL_0d1b:  call       "bool string.op_Equality(string, string)"
  IL_0d20:  brtrue     IL_11dc
  IL_0d25:  br         IL_124c
  IL_0d2a:  ldarg.0
  IL_0d2b:  ldstr      "2.5.29.15"
  IL_0d30:  call       "bool string.op_Equality(string, string)"
  IL_0d35:  brtrue     IL_11e4
  IL_0d3a:  br         IL_124c
  IL_0d3f:  ldarg.0
  IL_0d40:  ldstr      "2.5.29.17"
  IL_0d45:  call       "bool string.op_Equality(string, string)"
  IL_0d4a:  brtrue     IL_11ec
  IL_0d4f:  br         IL_124c
  IL_0d54:  ldarg.0
  IL_0d55:  ldstr      "2.5.29.19"
  IL_0d5a:  call       "bool string.op_Equality(string, string)"
  IL_0d5f:  brtrue     IL_11f4
  IL_0d64:  br         IL_124c
  IL_0d69:  ldarg.0
  IL_0d6a:  ldstr      "2.5.29.20"
  IL_0d6f:  call       "bool string.op_Equality(string, string)"
  IL_0d74:  brtrue     IL_11fc
  IL_0d79:  br         IL_124c
  IL_0d7e:  ldarg.0
  IL_0d7f:  ldstr      "2.5.29.35"
  IL_0d84:  call       "bool string.op_Equality(string, string)"
  IL_0d89:  brtrue     IL_1204
  IL_0d8e:  br         IL_124c
  IL_0d93:  ldarg.0
  IL_0d94:  ldstr      "2.16.840.1.101.3.4.1.2"
  IL_0d99:  call       "bool string.op_Equality(string, string)"
  IL_0d9e:  brtrue     IL_120c
  IL_0da3:  br         IL_124c
  IL_0da8:  ldarg.0
  IL_0da9:  ldstr      "2.16.840.1.101.3.4.1.22"
  IL_0dae:  call       "bool string.op_Equality(string, string)"
  IL_0db3:  brtrue     IL_1214
  IL_0db8:  br         IL_124c
  IL_0dbd:  ldarg.0
  IL_0dbe:  ldstr      "2.16.840.1.101.3.4.1.42"
  IL_0dc3:  call       "bool string.op_Equality(string, string)"
  IL_0dc8:  brtrue     IL_121c
  IL_0dcd:  br         IL_124c
  IL_0dd2:  ldarg.0
  IL_0dd3:  ldstr      "2.16.840.1.101.3.4.2.1"
  IL_0dd8:  call       "bool string.op_Equality(string, string)"
  IL_0ddd:  brtrue     IL_1224
  IL_0de2:  br         IL_124c
  IL_0de7:  ldarg.0
  IL_0de8:  ldstr      "2.16.840.1.101.3.4.2.2"
  IL_0ded:  call       "bool string.op_Equality(string, string)"
  IL_0df2:  brtrue     IL_122c
  IL_0df7:  br         IL_124c
  IL_0dfc:  ldarg.0
  IL_0dfd:  ldstr      "2.16.840.1.101.3.4.2.3"
  IL_0e02:  call       "bool string.op_Equality(string, string)"
  IL_0e07:  brtrue     IL_1234
  IL_0e0c:  br         IL_124c
  IL_0e11:  ldarg.0
  IL_0e12:  ldstr      "2.23.140.1.2.1"
  IL_0e17:  call       "bool string.op_Equality(string, string)"
  IL_0e1c:  brtrue     IL_123c
  IL_0e21:  br         IL_124c
  IL_0e26:  ldarg.0
  IL_0e27:  ldstr      "2.23.140.1.2.2"
  IL_0e2c:  call       "bool string.op_Equality(string, string)"
  IL_0e31:  brtrue     IL_1244
  IL_0e36:  br         IL_124c
  IL_0e3b:  ldstr      "1.2.840.10040.4.1"
  IL_0e40:  stloc.0
  IL_0e41:  br         IL_1252
  IL_0e46:  ldstr      "1.2.840.10040.4.3"
  IL_0e4b:  stloc.0
  IL_0e4c:  br         IL_1252
  IL_0e51:  ldstr      "1.2.840.10045.2.1"
  IL_0e56:  stloc.0
  IL_0e57:  br         IL_1252
  IL_0e5c:  ldstr      "1.2.840.10045.1.1"
  IL_0e61:  stloc.0
  IL_0e62:  br         IL_1252
  IL_0e67:  ldstr      "1.2.840.10045.1.2"
  IL_0e6c:  stloc.0
  IL_0e6d:  br         IL_1252
  IL_0e72:  ldstr      "1.2.840.10045.3.1.7"
  IL_0e77:  stloc.0
  IL_0e78:  br         IL_1252
  IL_0e7d:  ldstr      "1.2.840.10045.4.1"
  IL_0e82:  stloc.0
  IL_0e83:  br         IL_1252
  IL_0e88:  ldstr      "1.2.840.10045.4.3.2"
  IL_0e8d:  stloc.0
  IL_0e8e:  br         IL_1252
  IL_0e93:  ldstr      "1.2.840.10045.4.3.3"
  IL_0e98:  stloc.0
  IL_0e99:  br         IL_1252
  IL_0e9e:  ldstr      "1.2.840.10045.4.3.4"
  IL_0ea3:  stloc.0
  IL_0ea4:  br         IL_1252
  IL_0ea9:  ldstr      "1.2.840.113549.1.1.1"
  IL_0eae:  stloc.0
  IL_0eaf:  br         IL_1252
  IL_0eb4:  ldstr      "1.2.840.113549.1.1.5"
  IL_0eb9:  stloc.0
  IL_0eba:  br         IL_1252
  IL_0ebf:  ldstr      "1.2.840.113549.1.1.7"
  IL_0ec4:  stloc.0
  IL_0ec5:  br         IL_1252
  IL_0eca:  ldstr      "1.2.840.113549.1.1.8"
  IL_0ecf:  stloc.0
  IL_0ed0:  br         IL_1252
  IL_0ed5:  ldstr      "1.2.840.113549.1.1.9"
  IL_0eda:  stloc.0
  IL_0edb:  br         IL_1252
  IL_0ee0:  ldstr      "1.2.840.113549.1.1.10"
  IL_0ee5:  stloc.0
  IL_0ee6:  br         IL_1252
  IL_0eeb:  ldstr      "1.2.840.113549.1.1.11"
  IL_0ef0:  stloc.0
  IL_0ef1:  br         IL_1252
  IL_0ef6:  ldstr      "1.2.840.113549.1.1.12"
  IL_0efb:  stloc.0
  IL_0efc:  br         IL_1252
  IL_0f01:  ldstr      "1.2.840.113549.1.1.13"
  IL_0f06:  stloc.0
  IL_0f07:  br         IL_1252
  IL_0f0c:  ldstr      "1.2.840.113549.1.5.3"
  IL_0f11:  stloc.0
  IL_0f12:  br         IL_1252
  IL_0f17:  ldstr      "1.2.840.113549.1.5.10"
  IL_0f1c:  stloc.0
  IL_0f1d:  br         IL_1252
  IL_0f22:  ldstr      "1.2.840.113549.1.5.11"
  IL_0f27:  stloc.0
  IL_0f28:  br         IL_1252
  IL_0f2d:  ldstr      "1.2.840.113549.1.5.12"
  IL_0f32:  stloc.0
  IL_0f33:  br         IL_1252
  IL_0f38:  ldstr      "1.2.840.113549.1.5.13"
  IL_0f3d:  stloc.0
  IL_0f3e:  br         IL_1252
  IL_0f43:  ldstr      "1.2.840.113549.1.7.1"
  IL_0f48:  stloc.0
  IL_0f49:  br         IL_1252
  IL_0f4e:  ldstr      "1.2.840.113549.1.7.2"
  IL_0f53:  stloc.0
  IL_0f54:  br         IL_1252
  IL_0f59:  ldstr      "1.2.840.113549.1.7.3"
  IL_0f5e:  stloc.0
  IL_0f5f:  br         IL_1252
  IL_0f64:  ldstr      "1.2.840.113549.1.7.6"
  IL_0f69:  stloc.0
  IL_0f6a:  br         IL_1252
  IL_0f6f:  ldstr      "1.2.840.113549.1.9.1"
  IL_0f74:  stloc.0
  IL_0f75:  br         IL_1252
  IL_0f7a:  ldstr      "1.2.840.113549.1.9.3"
  IL_0f7f:  stloc.0
  IL_0f80:  br         IL_1252
  IL_0f85:  ldstr      "1.2.840.113549.1.9.4"
  IL_0f8a:  stloc.0
  IL_0f8b:  br         IL_1252
  IL_0f90:  ldstr      "1.2.840.113549.1.9.5"
  IL_0f95:  stloc.0
  IL_0f96:  br         IL_1252
  IL_0f9b:  ldstr      "1.2.840.113549.1.9.6"
  IL_0fa0:  stloc.0
  IL_0fa1:  br         IL_1252
  IL_0fa6:  ldstr      "1.2.840.113549.1.9.7"
  IL_0fab:  stloc.0
  IL_0fac:  br         IL_1252
  IL_0fb1:  ldstr      "1.2.840.113549.1.9.14"
  IL_0fb6:  stloc.0
  IL_0fb7:  br         IL_1252
  IL_0fbc:  ldstr      "1.2.840.113549.1.9.15"
  IL_0fc1:  stloc.0
  IL_0fc2:  br         IL_1252
  IL_0fc7:  ldstr      "1.2.840.113549.1.9.16.1.4"
  IL_0fcc:  stloc.0
  IL_0fcd:  br         IL_1252
  IL_0fd2:  ldstr      "1.2.840.113549.1.9.16.2.12"
  IL_0fd7:  stloc.0
  IL_0fd8:  br         IL_1252
  IL_0fdd:  ldstr      "1.2.840.113549.1.9.16.2.14"
  IL_0fe2:  stloc.0
  IL_0fe3:  br         IL_1252
  IL_0fe8:  ldstr      "1.2.840.113549.1.9.16.2.47"
  IL_0fed:  stloc.0
  IL_0fee:  br         IL_1252
  IL_0ff3:  ldstr      "1.2.840.113549.1.9.20"
  IL_0ff8:  stloc.0
  IL_0ff9:  br         IL_1252
  IL_0ffe:  ldstr      "1.2.840.113549.1.9.21"
  IL_1003:  stloc.0
  IL_1004:  br         IL_1252
  IL_1009:  ldstr      "1.2.840.113549.1.9.22.1"
  IL_100e:  stloc.0
  IL_100f:  br         IL_1252
  IL_1014:  ldstr      "1.2.840.113549.1.12.1.3"
  IL_1019:  stloc.0
  IL_101a:  br         IL_1252
  IL_101f:  ldstr      "1.2.840.113549.1.12.1.5"
  IL_1024:  stloc.0
  IL_1025:  br         IL_1252
  IL_102a:  ldstr      "1.2.840.113549.1.12.1.6"
  IL_102f:  stloc.0
  IL_1030:  br         IL_1252
  IL_1035:  ldstr      "1.2.840.113549.1.12.10.1.1"
  IL_103a:  stloc.0
  IL_103b:  br         IL_1252
  IL_1040:  ldstr      "1.2.840.113549.1.12.10.1.2"
  IL_1045:  stloc.0
  IL_1046:  br         IL_1252
  IL_104b:  ldstr      "1.2.840.113549.1.12.10.1.3"
  IL_1050:  stloc.0
  IL_1051:  br         IL_1252
  IL_1056:  ldstr      "1.2.840.113549.1.12.10.1.5"
  IL_105b:  stloc.0
  IL_105c:  br         IL_1252
  IL_1061:  ldstr      "1.2.840.113549.1.12.10.1.6"
  IL_1066:  stloc.0
  IL_1067:  br         IL_1252
  IL_106c:  ldstr      "1.2.840.113549.2.5"
  IL_1071:  stloc.0
  IL_1072:  br         IL_1252
  IL_1077:  ldstr      "1.2.840.113549.2.7"
  IL_107c:  stloc.0
  IL_107d:  br         IL_1252
  IL_1082:  ldstr      "1.2.840.113549.2.9"
  IL_1087:  stloc.0
  IL_1088:  br         IL_1252
  IL_108d:  ldstr      "1.2.840.113549.2.10"
  IL_1092:  stloc.0
  IL_1093:  br         IL_1252
  IL_1098:  ldstr      "1.2.840.113549.2.11"
  IL_109d:  stloc.0
  IL_109e:  br         IL_1252
  IL_10a3:  ldstr      "1.2.840.113549.3.2"
  IL_10a8:  stloc.0
  IL_10a9:  br         IL_1252
  IL_10ae:  ldstr      "1.2.840.113549.3.7"
  IL_10b3:  stloc.0
  IL_10b4:  br         IL_1252
  IL_10b9:  ldstr      "1.3.6.1.4.1.311.17.1"
  IL_10be:  stloc.0
  IL_10bf:  br         IL_1252
  IL_10c4:  ldstr      "1.3.6.1.4.1.311.17.3.20"
  IL_10c9:  stloc.0
  IL_10ca:  br         IL_1252
  IL_10cf:  ldstr      "1.3.6.1.4.1.311.20.2.3"
  IL_10d4:  stloc.0
  IL_10d5:  br         IL_1252
  IL_10da:  ldstr      "1.3.6.1.4.1.311.88.2.1"
  IL_10df:  stloc.0
  IL_10e0:  br         IL_1252
  IL_10e5:  ldstr      "1.3.6.1.4.1.311.88.2.2"
  IL_10ea:  stloc.0
  IL_10eb:  br         IL_1252
  IL_10f0:  ldstr      "1.3.6.1.5.5.7.3.1"
  IL_10f5:  stloc.0
  IL_10f6:  br         IL_1252
  IL_10fb:  ldstr      "1.3.6.1.5.5.7.3.2"
  IL_1100:  stloc.0
  IL_1101:  br         IL_1252
  IL_1106:  ldstr      "1.3.6.1.5.5.7.3.3"
  IL_110b:  stloc.0
  IL_110c:  br         IL_1252
  IL_1111:  ldstr      "1.3.6.1.5.5.7.3.4"
  IL_1116:  stloc.0
  IL_1117:  br         IL_1252
  IL_111c:  ldstr      "1.3.6.1.5.5.7.3.8"
  IL_1121:  stloc.0
  IL_1122:  br         IL_1252
  IL_1127:  ldstr      "1.3.6.1.5.5.7.3.9"
  IL_112c:  stloc.0
  IL_112d:  br         IL_1252
  IL_1132:  ldstr      "1.3.6.1.5.5.7.6.2"
  IL_1137:  stloc.0
  IL_1138:  br         IL_1252
  IL_113d:  ldstr      "1.3.6.1.5.5.7.48.1"
  IL_1142:  stloc.0
  IL_1143:  br         IL_1252
  IL_1148:  ldstr      "1.3.6.1.5.5.7.48.1.2"
  IL_114d:  stloc.0
  IL_114e:  br         IL_1252
  IL_1153:  ldstr      "1.3.6.1.5.5.7.48.2"
  IL_1158:  stloc.0
  IL_1159:  br         IL_1252
  IL_115e:  ldstr      "1.3.14.3.2.26"
  IL_1163:  stloc.0
  IL_1164:  br         IL_1252
  IL_1169:  ldstr      "1.3.14.3.2.7"
  IL_116e:  stloc.0
  IL_116f:  br         IL_1252
  IL_1174:  ldstr      "1.3.132.0.34"
  IL_1179:  stloc.0
  IL_117a:  br         IL_1252
  IL_117f:  ldstr      "1.3.132.0.35"
  IL_1184:  stloc.0
  IL_1185:  br         IL_1252
  IL_118a:  ldstr      "2.5.4.3"
  IL_118f:  stloc.0
  IL_1190:  br         IL_1252
  IL_1195:  ldstr      "2.5.4.5"
  IL_119a:  stloc.0
  IL_119b:  br         IL_1252
  IL_11a0:  ldstr      "2.5.4.6"
  IL_11a5:  stloc.0
  IL_11a6:  br         IL_1252
  IL_11ab:  ldstr      "2.5.4.7"
  IL_11b0:  stloc.0
  IL_11b1:  br         IL_1252
  IL_11b6:  ldstr      "2.5.4.8"
  IL_11bb:  stloc.0
  IL_11bc:  br         IL_1252
  IL_11c1:  ldstr      "2.5.4.10"
  IL_11c6:  stloc.0
  IL_11c7:  br         IL_1252
  IL_11cc:  ldstr      "2.5.4.11"
  IL_11d1:  stloc.0
  IL_11d2:  br.s       IL_1252
  IL_11d4:  ldstr      "2.5.4.97"
  IL_11d9:  stloc.0
  IL_11da:  br.s       IL_1252
  IL_11dc:  ldstr      "2.5.29.14"
  IL_11e1:  stloc.0
  IL_11e2:  br.s       IL_1252
  IL_11e4:  ldstr      "2.5.29.15"
  IL_11e9:  stloc.0
  IL_11ea:  br.s       IL_1252
  IL_11ec:  ldstr      "2.5.29.17"
  IL_11f1:  stloc.0
  IL_11f2:  br.s       IL_1252
  IL_11f4:  ldstr      "2.5.29.19"
  IL_11f9:  stloc.0
  IL_11fa:  br.s       IL_1252
  IL_11fc:  ldstr      "2.5.29.20"
  IL_1201:  stloc.0
  IL_1202:  br.s       IL_1252
  IL_1204:  ldstr      "2.5.29.35"
  IL_1209:  stloc.0
  IL_120a:  br.s       IL_1252
  IL_120c:  ldstr      "2.16.840.1.101.3.4.1.2"
  IL_1211:  stloc.0
  IL_1212:  br.s       IL_1252
  IL_1214:  ldstr      "2.16.840.1.101.3.4.1.22"
  IL_1219:  stloc.0
  IL_121a:  br.s       IL_1252
  IL_121c:  ldstr      "2.16.840.1.101.3.4.1.42"
  IL_1221:  stloc.0
  IL_1222:  br.s       IL_1252
  IL_1224:  ldstr      "2.16.840.1.101.3.4.2.1"
  IL_1229:  stloc.0
  IL_122a:  br.s       IL_1252
  IL_122c:  ldstr      "2.16.840.1.101.3.4.2.2"
  IL_1231:  stloc.0
  IL_1232:  br.s       IL_1252
  IL_1234:  ldstr      "2.16.840.1.101.3.4.2.3"
  IL_1239:  stloc.0
  IL_123a:  br.s       IL_1252
  IL_123c:  ldstr      "2.23.140.1.2.1"
  IL_1241:  stloc.0
  IL_1242:  br.s       IL_1252
  IL_1244:  ldstr      "2.23.140.1.2.2"
  IL_1249:  stloc.0
  IL_124a:  br.s       IL_1252
  IL_124c:  ldstr      "default"
  IL_1251:  stloc.0
  IL_1252:  ldloc.0
  IL_1253:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void TryParseStatusFile()
    {
        // Based on https://github.com/dotnet/runtime/blob/a30de6d40f69ef612b514344a5ec83fffd10b957/src/libraries/Common/src/Interop/Linux/procfs/Interop.ProcFsStat.TryReadStatusFile.cs#L66-L102
        // Buckets: 1, 1, 1, 1, 1, 1, 1, 1
        var source = """
assert("Pid");
assert("VmHWM");
assert("VmRSS");
assert("VmData");
assert("VmSwap");
assert("VmSize");
assert("VmPeak");
assert("VmStk");
 
assert(null, "default");
assert("", "default");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string value)
    {
        return value switch
        {
            "Pid" => "Pid",
            "VmHWM" => "VmHWM",
            "VmRSS" => "VmRSS",
            "VmData" => "VmData",
            "VmSwap" => "VmSwap",
            "VmSize" => "VmSize",
            "VmPeak" => "VmPeak",
            "VmStk" => "VmStk",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      317 (0x13d)
  .maxstack  2
  .locals init (string V_0,
                int V_1,
                char V_2)
  IL_0000:  ldarg.0
  IL_0001:  brfalse    IL_0135
  IL_0006:  ldarg.0
  IL_0007:  call       "int string.Length.get"
  IL_000c:  stloc.1
  IL_000d:  ldloc.1
  IL_000e:  ldc.i4.3
  IL_000f:  sub
  IL_0010:  switch    (
        IL_0074,
        IL_0135,
        IL_002a,
        IL_0046)
  IL_0025:  br         IL_0135
  IL_002a:  ldarg.0
  IL_002b:  ldc.i4.2
  IL_002c:  call       "char string.this[int].get"
  IL_0031:  stloc.2
  IL_0032:  ldloc.2
  IL_0033:  ldc.i4.s   72
  IL_0035:  beq.s      IL_0086
  IL_0037:  ldloc.2
  IL_0038:  ldc.i4.s   82
  IL_003a:  beq.s      IL_0098
  IL_003c:  ldloc.2
  IL_003d:  ldc.i4.s   83
  IL_003f:  beq.s      IL_00aa
  IL_0041:  br         IL_0135
  IL_0046:  ldarg.0
  IL_0047:  ldc.i4.3
  IL_0048:  call       "char string.this[int].get"
  IL_004d:  stloc.2
  IL_004e:  ldloc.2
  IL_004f:  ldc.i4.s   101
  IL_0051:  bgt.un.s   IL_0065
  IL_0053:  ldloc.2
  IL_0054:  ldc.i4.s   97
  IL_0056:  beq.s      IL_00b9
  IL_0058:  ldloc.2
  IL_0059:  ldc.i4.s   101
  IL_005b:  beq        IL_00e6
  IL_0060:  br         IL_0135
  IL_0065:  ldloc.2
  IL_0066:  ldc.i4.s   105
  IL_0068:  beq.s      IL_00d7
  IL_006a:  ldloc.2
  IL_006b:  ldc.i4.s   119
  IL_006d:  beq.s      IL_00c8
  IL_006f:  br         IL_0135
  IL_0074:  ldarg.0
  IL_0075:  ldstr      "Pid"
  IL_007a:  call       "bool string.op_Equality(string, string)"
  IL_007f:  brtrue.s   IL_00f5
  IL_0081:  br         IL_0135
  IL_0086:  ldarg.0
  IL_0087:  ldstr      "VmHWM"
  IL_008c:  call       "bool string.op_Equality(string, string)"
  IL_0091:  brtrue.s   IL_00fd
  IL_0093:  br         IL_0135
  IL_0098:  ldarg.0
  IL_0099:  ldstr      "VmRSS"
  IL_009e:  call       "bool string.op_Equality(string, string)"
  IL_00a3:  brtrue.s   IL_0105
  IL_00a5:  br         IL_0135
  IL_00aa:  ldarg.0
  IL_00ab:  ldstr      "VmStk"
  IL_00b0:  call       "bool string.op_Equality(string, string)"
  IL_00b5:  brtrue.s   IL_012d
  IL_00b7:  br.s       IL_0135
  IL_00b9:  ldarg.0
  IL_00ba:  ldstr      "VmData"
  IL_00bf:  call       "bool string.op_Equality(string, string)"
  IL_00c4:  brtrue.s   IL_010d
  IL_00c6:  br.s       IL_0135
  IL_00c8:  ldarg.0
  IL_00c9:  ldstr      "VmSwap"
  IL_00ce:  call       "bool string.op_Equality(string, string)"
  IL_00d3:  brtrue.s   IL_0115
  IL_00d5:  br.s       IL_0135
  IL_00d7:  ldarg.0
  IL_00d8:  ldstr      "VmSize"
  IL_00dd:  call       "bool string.op_Equality(string, string)"
  IL_00e2:  brtrue.s   IL_011d
  IL_00e4:  br.s       IL_0135
  IL_00e6:  ldarg.0
  IL_00e7:  ldstr      "VmPeak"
  IL_00ec:  call       "bool string.op_Equality(string, string)"
  IL_00f1:  brtrue.s   IL_0125
  IL_00f3:  br.s       IL_0135
  IL_00f5:  ldstr      "Pid"
  IL_00fa:  stloc.0
  IL_00fb:  br.s       IL_013b
  IL_00fd:  ldstr      "VmHWM"
  IL_0102:  stloc.0
  IL_0103:  br.s       IL_013b
  IL_0105:  ldstr      "VmRSS"
  IL_010a:  stloc.0
  IL_010b:  br.s       IL_013b
  IL_010d:  ldstr      "VmData"
  IL_0112:  stloc.0
  IL_0113:  br.s       IL_013b
  IL_0115:  ldstr      "VmSwap"
  IL_011a:  stloc.0
  IL_011b:  br.s       IL_013b
  IL_011d:  ldstr      "VmSize"
  IL_0122:  stloc.0
  IL_0123:  br.s       IL_013b
  IL_0125:  ldstr      "VmPeak"
  IL_012a:  stloc.0
  IL_012b:  br.s       IL_013b
  IL_012d:  ldstr      "VmStk"
  IL_0132:  stloc.0
  IL_0133:  br.s       IL_013b
  IL_0135:  ldstr      "default"
  IL_013a:  stloc.0
  IL_013b:  ldloc.0
  IL_013c:  ret
}
""");
 
        comp = CreateCompilation(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      322 (0x142)
  .maxstack  2
  .locals init (string V_0,
                uint V_1)
  IL_0000:  ldarg.0
  IL_0001:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  ldc.i4     0x8979e177
  IL_000d:  bgt.un.s   IL_0044
  IL_000f:  ldloc.1
  IL_0010:  ldc.i4     0x1defdbc8
  IL_0015:  bgt.un.s   IL_002f
  IL_0017:  ldloc.1
  IL_0018:  ldc.i4     0xd5b8205
  IL_001d:  beq        IL_00cd
  IL_0022:  ldloc.1
  IL_0023:  ldc.i4     0x1defdbc8
  IL_0028:  beq.s      IL_009d
  IL_002a:  br         IL_013a
  IL_002f:  ldloc.1
  IL_0030:  ldc.i4     0x364be934
  IL_0035:  beq.s      IL_00af
  IL_0037:  ldloc.1
  IL_0038:  ldc.i4     0x8979e177
  IL_003d:  beq.s      IL_00be
  IL_003f:  br         IL_013a
  IL_0044:  ldloc.1
  IL_0045:  ldc.i4     0xce4790c2
  IL_004a:  bgt.un.s   IL_0064
  IL_004c:  ldloc.1
  IL_004d:  ldc.i4     0xb230f6f0
  IL_0052:  beq        IL_00eb
  IL_0057:  ldloc.1
  IL_0058:  ldc.i4     0xce4790c2
  IL_005d:  beq.s      IL_0079
  IL_005f:  br         IL_013a
  IL_0064:  ldloc.1
  IL_0065:  ldc.i4     0xe840f3b7
  IL_006a:  beq.s      IL_00dc
  IL_006c:  ldloc.1
  IL_006d:  ldc.i4     0xf7948524
  IL_0072:  beq.s      IL_008b
  IL_0074:  br         IL_013a
  IL_0079:  ldarg.0
  IL_007a:  ldstr      "Pid"
  IL_007f:  call       "bool string.op_Equality(string, string)"
  IL_0084:  brtrue.s   IL_00fa
  IL_0086:  br         IL_013a
  IL_008b:  ldarg.0
  IL_008c:  ldstr      "VmHWM"
  IL_0091:  call       "bool string.op_Equality(string, string)"
  IL_0096:  brtrue.s   IL_0102
  IL_0098:  br         IL_013a
  IL_009d:  ldarg.0
  IL_009e:  ldstr      "VmRSS"
  IL_00a3:  call       "bool string.op_Equality(string, string)"
  IL_00a8:  brtrue.s   IL_010a
  IL_00aa:  br         IL_013a
  IL_00af:  ldarg.0
  IL_00b0:  ldstr      "VmData"
  IL_00b5:  call       "bool string.op_Equality(string, string)"
  IL_00ba:  brtrue.s   IL_0112
  IL_00bc:  br.s       IL_013a
  IL_00be:  ldarg.0
  IL_00bf:  ldstr      "VmSwap"
  IL_00c4:  call       "bool string.op_Equality(string, string)"
  IL_00c9:  brtrue.s   IL_011a
  IL_00cb:  br.s       IL_013a
  IL_00cd:  ldarg.0
  IL_00ce:  ldstr      "VmSize"
  IL_00d3:  call       "bool string.op_Equality(string, string)"
  IL_00d8:  brtrue.s   IL_0122
  IL_00da:  br.s       IL_013a
  IL_00dc:  ldarg.0
  IL_00dd:  ldstr      "VmPeak"
  IL_00e2:  call       "bool string.op_Equality(string, string)"
  IL_00e7:  brtrue.s   IL_012a
  IL_00e9:  br.s       IL_013a
  IL_00eb:  ldarg.0
  IL_00ec:  ldstr      "VmStk"
  IL_00f1:  call       "bool string.op_Equality(string, string)"
  IL_00f6:  brtrue.s   IL_0132
  IL_00f8:  br.s       IL_013a
  IL_00fa:  ldstr      "Pid"
  IL_00ff:  stloc.0
  IL_0100:  br.s       IL_0140
  IL_0102:  ldstr      "VmHWM"
  IL_0107:  stloc.0
  IL_0108:  br.s       IL_0140
  IL_010a:  ldstr      "VmRSS"
  IL_010f:  stloc.0
  IL_0110:  br.s       IL_0140
  IL_0112:  ldstr      "VmData"
  IL_0117:  stloc.0
  IL_0118:  br.s       IL_0140
  IL_011a:  ldstr      "VmSwap"
  IL_011f:  stloc.0
  IL_0120:  br.s       IL_0140
  IL_0122:  ldstr      "VmSize"
  IL_0127:  stloc.0
  IL_0128:  br.s       IL_0140
  IL_012a:  ldstr      "VmPeak"
  IL_012f:  stloc.0
  IL_0130:  br.s       IL_0140
  IL_0132:  ldstr      "VmStk"
  IL_0137:  stloc.0
  IL_0138:  br.s       IL_0140
  IL_013a:  ldstr      "default"
  IL_013f:  stloc.0
  IL_0140:  ldloc.0
  IL_0141:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void GetHashForChannelBinding()
    {
        // Based on https://github.com/dotnet/runtime/blob/a30de6d40f69ef612b514344a5ec83fffd10b957/src/libraries/System.Net.Security/src/System/Net/Security/Pal.Managed/EndpointChannelBindingToken.cs#L31-L57
        // Buckets: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
        var source = """
assert("1.2.840.113549.2.5");
assert("1.2.840.113549.1.1.4");
assert("1.3.14.3.2.26");
assert("1.2.840.10040.4.3");
assert("1.2.840.10045.4.1");
assert("1.2.840.113549.1.1.5");
assert("2.16.840.1.101.3.4.2.1");
assert("1.2.840.10045.4.3.2");
assert("1.2.840.113549.1.1.11");
assert("2.16.840.1.101.3.4.2.2");
assert("1.2.840.10045.4.3.3");
assert("1.2.840.113549.1.1.12");
assert("2.16.840.1.101.3.4.2.3");
assert("1.2.840.10045.4.3.4");
assert("1.2.840.113549.1.1.13");
 
assert(null, "default");
assert("", "default");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string value)
    {
        return value switch
        {
            "1.2.840.113549.2.5" => "1.2.840.113549.2.5",
            "1.2.840.113549.1.1.4" => "1.2.840.113549.1.1.4",
            "1.3.14.3.2.26" => "1.3.14.3.2.26",
            "1.2.840.10040.4.3" => "1.2.840.10040.4.3",
            "1.2.840.10045.4.1" => "1.2.840.10045.4.1",
            "1.2.840.113549.1.1.5" => "1.2.840.113549.1.1.5",
            "2.16.840.1.101.3.4.2.1" => "2.16.840.1.101.3.4.2.1",
            "1.2.840.10045.4.3.2" => "1.2.840.10045.4.3.2",
            "1.2.840.113549.1.1.11" => "1.2.840.113549.1.1.11",
            "2.16.840.1.101.3.4.2.2" => "2.16.840.1.101.3.4.2.2",
            "1.2.840.10045.4.3.3" => "1.2.840.10045.4.3.3",
            "1.2.840.113549.1.1.12" => "1.2.840.113549.1.1.12",
            "2.16.840.1.101.3.4.2.3" => "2.16.840.1.101.3.4.2.3",
            "1.2.840.10045.4.3.4" => "1.2.840.10045.4.3.4",
            "1.2.840.113549.1.1.13" => "1.2.840.113549.1.1.13",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      663 (0x297)
  .maxstack  2
  .locals init (string V_0,
                int V_1,
                char V_2)
  IL_0000:  ldarg.0
  IL_0001:  brfalse    IL_028f
  IL_0006:  ldarg.0
  IL_0007:  call       "int string.Length.get"
  IL_000c:  stloc.1
  IL_000d:  ldloc.1
  IL_000e:  ldc.i4.s   13
  IL_0010:  sub
  IL_0011:  switch    (
        IL_0127,
        IL_028f,
        IL_028f,
        IL_028f,
        IL_0061,
        IL_00e8,
        IL_00a2,
        IL_0043,
        IL_00c5,
        IL_007f)
  IL_003e:  br         IL_028f
  IL_0043:  ldarg.0
  IL_0044:  ldc.i4.s   19
  IL_0046:  call       "char string.this[int].get"
  IL_004b:  stloc.2
  IL_004c:  ldloc.2
  IL_004d:  ldc.i4.s   52
  IL_004f:  beq        IL_00fd
  IL_0054:  ldloc.2
  IL_0055:  ldc.i4.s   53
  IL_0057:  beq        IL_0112
  IL_005c:  br         IL_028f
  IL_0061:  ldarg.0
  IL_0062:  ldc.i4.s   12
  IL_0064:  call       "char string.this[int].get"
  IL_0069:  stloc.2
  IL_006a:  ldloc.2
  IL_006b:  ldc.i4.s   48
  IL_006d:  beq        IL_013c
  IL_0072:  ldloc.2
  IL_0073:  ldc.i4.s   53
  IL_0075:  beq        IL_0151
  IL_007a:  br         IL_028f
  IL_007f:  ldarg.0
  IL_0080:  ldc.i4.s   21
  IL_0082:  call       "char string.this[int].get"
  IL_0087:  stloc.2
  IL_0088:  ldloc.2
  IL_0089:  ldc.i4.s   49
  IL_008b:  sub
  IL_008c:  switch    (
        IL_0166,
        IL_017b,
        IL_0190)
  IL_009d:  br         IL_028f
  IL_00a2:  ldarg.0
  IL_00a3:  ldc.i4.s   18
  IL_00a5:  call       "char string.this[int].get"
  IL_00aa:  stloc.2
  IL_00ab:  ldloc.2
  IL_00ac:  ldc.i4.s   50
  IL_00ae:  sub
  IL_00af:  switch    (
        IL_01a5,
        IL_01ba,
        IL_01cf)
  IL_00c0:  br         IL_028f
  IL_00c5:  ldarg.0
  IL_00c6:  ldc.i4.s   20
  IL_00c8:  call       "char string.this[int].get"
  IL_00cd:  stloc.2
  IL_00ce:  ldloc.2
  IL_00cf:  ldc.i4.s   49
  IL_00d1:  sub
  IL_00d2:  switch    (
        IL_01e4,
        IL_01f6,
        IL_0208)
  IL_00e3:  br         IL_028f
  IL_00e8:  ldarg.0
  IL_00e9:  ldstr      "1.2.840.113549.2.5"
  IL_00ee:  call       "bool string.op_Equality(string, string)"
  IL_00f3:  brtrue     IL_0217
  IL_00f8:  br         IL_028f
  IL_00fd:  ldarg.0
  IL_00fe:  ldstr      "1.2.840.113549.1.1.4"
  IL_0103:  call       "bool string.op_Equality(string, string)"
  IL_0108:  brtrue     IL_021f
  IL_010d:  br         IL_028f
  IL_0112:  ldarg.0
  IL_0113:  ldstr      "1.2.840.113549.1.1.5"
  IL_0118:  call       "bool string.op_Equality(string, string)"
  IL_011d:  brtrue     IL_023f
  IL_0122:  br         IL_028f
  IL_0127:  ldarg.0
  IL_0128:  ldstr      "1.3.14.3.2.26"
  IL_012d:  call       "bool string.op_Equality(string, string)"
  IL_0132:  brtrue     IL_0227
  IL_0137:  br         IL_028f
  IL_013c:  ldarg.0
  IL_013d:  ldstr      "1.2.840.10040.4.3"
  IL_0142:  call       "bool string.op_Equality(string, string)"
  IL_0147:  brtrue     IL_022f
  IL_014c:  br         IL_028f
  IL_0151:  ldarg.0
  IL_0152:  ldstr      "1.2.840.10045.4.1"
  IL_0157:  call       "bool string.op_Equality(string, string)"
  IL_015c:  brtrue     IL_0237
  IL_0161:  br         IL_028f
  IL_0166:  ldarg.0
  IL_0167:  ldstr      "2.16.840.1.101.3.4.2.1"
  IL_016c:  call       "bool string.op_Equality(string, string)"
  IL_0171:  brtrue     IL_0247
  IL_0176:  br         IL_028f
  IL_017b:  ldarg.0
  IL_017c:  ldstr      "2.16.840.1.101.3.4.2.2"
  IL_0181:  call       "bool string.op_Equality(string, string)"
  IL_0186:  brtrue     IL_025f
  IL_018b:  br         IL_028f
  IL_0190:  ldarg.0
  IL_0191:  ldstr      "2.16.840.1.101.3.4.2.3"
  IL_0196:  call       "bool string.op_Equality(string, string)"
  IL_019b:  brtrue     IL_0277
  IL_01a0:  br         IL_028f
  IL_01a5:  ldarg.0
  IL_01a6:  ldstr      "1.2.840.10045.4.3.2"
  IL_01ab:  call       "bool string.op_Equality(string, string)"
  IL_01b0:  brtrue     IL_024f
  IL_01b5:  br         IL_028f
  IL_01ba:  ldarg.0
  IL_01bb:  ldstr      "1.2.840.10045.4.3.3"
  IL_01c0:  call       "bool string.op_Equality(string, string)"
  IL_01c5:  brtrue     IL_0267
  IL_01ca:  br         IL_028f
  IL_01cf:  ldarg.0
  IL_01d0:  ldstr      "1.2.840.10045.4.3.4"
  IL_01d5:  call       "bool string.op_Equality(string, string)"
  IL_01da:  brtrue     IL_027f
  IL_01df:  br         IL_028f
  IL_01e4:  ldarg.0
  IL_01e5:  ldstr      "1.2.840.113549.1.1.11"
  IL_01ea:  call       "bool string.op_Equality(string, string)"
  IL_01ef:  brtrue.s   IL_0257
  IL_01f1:  br         IL_028f
  IL_01f6:  ldarg.0
  IL_01f7:  ldstr      "1.2.840.113549.1.1.12"
  IL_01fc:  call       "bool string.op_Equality(string, string)"
  IL_0201:  brtrue.s   IL_026f
  IL_0203:  br         IL_028f
  IL_0208:  ldarg.0
  IL_0209:  ldstr      "1.2.840.113549.1.1.13"
  IL_020e:  call       "bool string.op_Equality(string, string)"
  IL_0213:  brtrue.s   IL_0287
  IL_0215:  br.s       IL_028f
  IL_0217:  ldstr      "1.2.840.113549.2.5"
  IL_021c:  stloc.0
  IL_021d:  br.s       IL_0295
  IL_021f:  ldstr      "1.2.840.113549.1.1.4"
  IL_0224:  stloc.0
  IL_0225:  br.s       IL_0295
  IL_0227:  ldstr      "1.3.14.3.2.26"
  IL_022c:  stloc.0
  IL_022d:  br.s       IL_0295
  IL_022f:  ldstr      "1.2.840.10040.4.3"
  IL_0234:  stloc.0
  IL_0235:  br.s       IL_0295
  IL_0237:  ldstr      "1.2.840.10045.4.1"
  IL_023c:  stloc.0
  IL_023d:  br.s       IL_0295
  IL_023f:  ldstr      "1.2.840.113549.1.1.5"
  IL_0244:  stloc.0
  IL_0245:  br.s       IL_0295
  IL_0247:  ldstr      "2.16.840.1.101.3.4.2.1"
  IL_024c:  stloc.0
  IL_024d:  br.s       IL_0295
  IL_024f:  ldstr      "1.2.840.10045.4.3.2"
  IL_0254:  stloc.0
  IL_0255:  br.s       IL_0295
  IL_0257:  ldstr      "1.2.840.113549.1.1.11"
  IL_025c:  stloc.0
  IL_025d:  br.s       IL_0295
  IL_025f:  ldstr      "2.16.840.1.101.3.4.2.2"
  IL_0264:  stloc.0
  IL_0265:  br.s       IL_0295
  IL_0267:  ldstr      "1.2.840.10045.4.3.3"
  IL_026c:  stloc.0
  IL_026d:  br.s       IL_0295
  IL_026f:  ldstr      "1.2.840.113549.1.1.12"
  IL_0274:  stloc.0
  IL_0275:  br.s       IL_0295
  IL_0277:  ldstr      "2.16.840.1.101.3.4.2.3"
  IL_027c:  stloc.0
  IL_027d:  br.s       IL_0295
  IL_027f:  ldstr      "1.2.840.10045.4.3.4"
  IL_0284:  stloc.0
  IL_0285:  br.s       IL_0295
  IL_0287:  ldstr      "1.2.840.113549.1.1.13"
  IL_028c:  stloc.0
  IL_028d:  br.s       IL_0295
  IL_028f:  ldstr      "default"
  IL_0294:  stloc.0
  IL_0295:  ldloc.0
  IL_0296:  ret
}
""");
 
        comp = CreateCompilation(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      684 (0x2ac)
  .maxstack  2
  .locals init (string V_0,
                uint V_1)
  IL_0000:  ldarg.0
  IL_0001:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  ldc.i4     0x2607050f
  IL_000d:  bgt.un.s   IL_007b
  IL_000f:  ldloc.1
  IL_0010:  ldc.i4     0x23070056
  IL_0015:  bgt.un.s   IL_003d
  IL_0017:  ldloc.1
  IL_0018:  ldc.i4     0x1d3018af
  IL_001d:  beq        IL_014e
  IL_0022:  ldloc.1
  IL_0023:  ldc.i4     0x1e6ebeee
  IL_0028:  beq        IL_0139
  IL_002d:  ldloc.1
  IL_002e:  ldc.i4     0x23070056
  IL_0033:  beq        IL_01cc
  IL_0038:  br         IL_02a4
  IL_003d:  ldloc.1
  IL_003e:  ldc.i4     0x240701e9
  IL_0043:  bgt.un.s   IL_0060
  IL_0045:  ldloc.1
  IL_0046:  ldc.i4     0x23db8e98
  IL_004b:  beq        IL_0163
  IL_0050:  ldloc.1
  IL_0051:  ldc.i4     0x240701e9
  IL_0056:  beq        IL_018d
  IL_005b:  br         IL_02a4
  IL_0060:  ldloc.1
  IL_0061:  ldc.i4     0x24db902b
  IL_0066:  beq        IL_010f
  IL_006b:  ldloc.1
  IL_006c:  ldc.i4     0x2607050f
  IL_0071:  beq        IL_020b
  IL_0076:  br         IL_02a4
  IL_007b:  ldloc.1
  IL_007c:  ldc.i4     0x95ab4e75
  IL_0081:  bgt.un.s   IL_00c1
  IL_0083:  ldloc.1
  IL_0084:  ldc.i4     0x93ab4b4f
  IL_0089:  bgt.un.s   IL_00a6
  IL_008b:  ldloc.1
  IL_008c:  ldc.i4     0x332fa045
  IL_0091:  beq        IL_0124
  IL_0096:  ldloc.1
  IL_0097:  ldc.i4     0x93ab4b4f
  IL_009c:  beq        IL_01a2
  IL_00a1:  br         IL_02a4
  IL_00a6:  ldloc.1
  IL_00a7:  ldc.i4     0x94ab4ce2
  IL_00ac:  beq        IL_01e1
  IL_00b1:  ldloc.1
  IL_00b2:  ldc.i4     0x95ab4e75
  IL_00b7:  beq        IL_021d
  IL_00bc:  br         IL_02a4
  IL_00c1:  ldloc.1
  IL_00c2:  ldc.i4     0xdd91cb42
  IL_00c7:  bgt.un.s   IL_00e4
  IL_00c9:  ldloc.1
  IL_00ca:  ldc.i4     0xdc91c9af
  IL_00cf:  beq        IL_0178
  IL_00d4:  ldloc.1
  IL_00d5:  ldc.i4     0xdd91cb42
  IL_00da:  beq        IL_01b7
  IL_00df:  br         IL_02a4
  IL_00e4:  ldloc.1
  IL_00e5:  ldc.i4     0xde91ccd5
  IL_00ea:  beq        IL_01f6
  IL_00ef:  ldloc.1
  IL_00f0:  ldc.i4     0xe0252800
  IL_00f5:  bne.un     IL_02a4
  IL_00fa:  ldarg.0
  IL_00fb:  ldstr      "1.2.840.113549.2.5"
  IL_0100:  call       "bool string.op_Equality(string, string)"
  IL_0105:  brtrue     IL_022c
  IL_010a:  br         IL_02a4
  IL_010f:  ldarg.0
  IL_0110:  ldstr      "1.2.840.113549.1.1.4"
  IL_0115:  call       "bool string.op_Equality(string, string)"
  IL_011a:  brtrue     IL_0234
  IL_011f:  br         IL_02a4
  IL_0124:  ldarg.0
  IL_0125:  ldstr      "1.3.14.3.2.26"
  IL_012a:  call       "bool string.op_Equality(string, string)"
  IL_012f:  brtrue     IL_023c
  IL_0134:  br         IL_02a4
  IL_0139:  ldarg.0
  IL_013a:  ldstr      "1.2.840.10040.4.3"
  IL_013f:  call       "bool string.op_Equality(string, string)"
  IL_0144:  brtrue     IL_0244
  IL_0149:  br         IL_02a4
  IL_014e:  ldarg.0
  IL_014f:  ldstr      "1.2.840.10045.4.1"
  IL_0154:  call       "bool string.op_Equality(string, string)"
  IL_0159:  brtrue     IL_024c
  IL_015e:  br         IL_02a4
  IL_0163:  ldarg.0
  IL_0164:  ldstr      "1.2.840.113549.1.1.5"
  IL_0169:  call       "bool string.op_Equality(string, string)"
  IL_016e:  brtrue     IL_0254
  IL_0173:  br         IL_02a4
  IL_0178:  ldarg.0
  IL_0179:  ldstr      "2.16.840.1.101.3.4.2.1"
  IL_017e:  call       "bool string.op_Equality(string, string)"
  IL_0183:  brtrue     IL_025c
  IL_0188:  br         IL_02a4
  IL_018d:  ldarg.0
  IL_018e:  ldstr      "1.2.840.10045.4.3.2"
  IL_0193:  call       "bool string.op_Equality(string, string)"
  IL_0198:  brtrue     IL_0264
  IL_019d:  br         IL_02a4
  IL_01a2:  ldarg.0
  IL_01a3:  ldstr      "1.2.840.113549.1.1.11"
  IL_01a8:  call       "bool string.op_Equality(string, string)"
  IL_01ad:  brtrue     IL_026c
  IL_01b2:  br         IL_02a4
  IL_01b7:  ldarg.0
  IL_01b8:  ldstr      "2.16.840.1.101.3.4.2.2"
  IL_01bd:  call       "bool string.op_Equality(string, string)"
  IL_01c2:  brtrue     IL_0274
  IL_01c7:  br         IL_02a4
  IL_01cc:  ldarg.0
  IL_01cd:  ldstr      "1.2.840.10045.4.3.3"
  IL_01d2:  call       "bool string.op_Equality(string, string)"
  IL_01d7:  brtrue     IL_027c
  IL_01dc:  br         IL_02a4
  IL_01e1:  ldarg.0
  IL_01e2:  ldstr      "1.2.840.113549.1.1.12"
  IL_01e7:  call       "bool string.op_Equality(string, string)"
  IL_01ec:  brtrue     IL_0284
  IL_01f1:  br         IL_02a4
  IL_01f6:  ldarg.0
  IL_01f7:  ldstr      "2.16.840.1.101.3.4.2.3"
  IL_01fc:  call       "bool string.op_Equality(string, string)"
  IL_0201:  brtrue     IL_028c
  IL_0206:  br         IL_02a4
  IL_020b:  ldarg.0
  IL_020c:  ldstr      "1.2.840.10045.4.3.4"
  IL_0211:  call       "bool string.op_Equality(string, string)"
  IL_0216:  brtrue.s   IL_0294
  IL_0218:  br         IL_02a4
  IL_021d:  ldarg.0
  IL_021e:  ldstr      "1.2.840.113549.1.1.13"
  IL_0223:  call       "bool string.op_Equality(string, string)"
  IL_0228:  brtrue.s   IL_029c
  IL_022a:  br.s       IL_02a4
  IL_022c:  ldstr      "1.2.840.113549.2.5"
  IL_0231:  stloc.0
  IL_0232:  br.s       IL_02aa
  IL_0234:  ldstr      "1.2.840.113549.1.1.4"
  IL_0239:  stloc.0
  IL_023a:  br.s       IL_02aa
  IL_023c:  ldstr      "1.3.14.3.2.26"
  IL_0241:  stloc.0
  IL_0242:  br.s       IL_02aa
  IL_0244:  ldstr      "1.2.840.10040.4.3"
  IL_0249:  stloc.0
  IL_024a:  br.s       IL_02aa
  IL_024c:  ldstr      "1.2.840.10045.4.1"
  IL_0251:  stloc.0
  IL_0252:  br.s       IL_02aa
  IL_0254:  ldstr      "1.2.840.113549.1.1.5"
  IL_0259:  stloc.0
  IL_025a:  br.s       IL_02aa
  IL_025c:  ldstr      "2.16.840.1.101.3.4.2.1"
  IL_0261:  stloc.0
  IL_0262:  br.s       IL_02aa
  IL_0264:  ldstr      "1.2.840.10045.4.3.2"
  IL_0269:  stloc.0
  IL_026a:  br.s       IL_02aa
  IL_026c:  ldstr      "1.2.840.113549.1.1.11"
  IL_0271:  stloc.0
  IL_0272:  br.s       IL_02aa
  IL_0274:  ldstr      "2.16.840.1.101.3.4.2.2"
  IL_0279:  stloc.0
  IL_027a:  br.s       IL_02aa
  IL_027c:  ldstr      "1.2.840.10045.4.3.3"
  IL_0281:  stloc.0
  IL_0282:  br.s       IL_02aa
  IL_0284:  ldstr      "1.2.840.113549.1.1.12"
  IL_0289:  stloc.0
  IL_028a:  br.s       IL_02aa
  IL_028c:  ldstr      "2.16.840.1.101.3.4.2.3"
  IL_0291:  stloc.0
  IL_0292:  br.s       IL_02aa
  IL_0294:  ldstr      "1.2.840.10045.4.3.4"
  IL_0299:  stloc.0
  IL_029a:  br.s       IL_02aa
  IL_029c:  ldstr      "1.2.840.113549.1.1.13"
  IL_02a1:  stloc.0
  IL_02a2:  br.s       IL_02aa
  IL_02a4:  ldstr      "default"
  IL_02a9:  stloc.0
  IL_02aa:  ldloc.0
  IL_02ab:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void WriteEntityRef()
    {
        // Based on https://github.com/dotnet/runtime/blob/a30de6d40f69ef612b514344a5ec83fffd10b957/src/libraries/System.Private.Xml.Linq/src/System/Xml/Linq/XNodeBuilder.cs#L115-L134
        var source = """
assert(null, "default");
assert("", "default");
assert("apos");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string value)
    {
        return value switch
        {
            "amp" => "amp",
            "apos" => "apos",
            "gt" => "gt",
            "lt" => "lt",
            "quot" => "quot",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      115 (0x73)
  .maxstack  2
  .locals init (string V_0)
  IL_0000:  ldarg.0
  IL_0001:  ldstr      "amp"
  IL_0006:  call       "bool string.op_Equality(string, string)"
  IL_000b:  brtrue.s   IL_0043
  IL_000d:  ldarg.0
  IL_000e:  ldstr      "apos"
  IL_0013:  call       "bool string.op_Equality(string, string)"
  IL_0018:  brtrue.s   IL_004b
  IL_001a:  ldarg.0
  IL_001b:  ldstr      "gt"
  IL_0020:  call       "bool string.op_Equality(string, string)"
  IL_0025:  brtrue.s   IL_0053
  IL_0027:  ldarg.0
  IL_0028:  ldstr      "lt"
  IL_002d:  call       "bool string.op_Equality(string, string)"
  IL_0032:  brtrue.s   IL_005b
  IL_0034:  ldarg.0
  IL_0035:  ldstr      "quot"
  IL_003a:  call       "bool string.op_Equality(string, string)"
  IL_003f:  brtrue.s   IL_0063
  IL_0041:  br.s       IL_006b
  IL_0043:  ldstr      "amp"
  IL_0048:  stloc.0
  IL_0049:  br.s       IL_0071
  IL_004b:  ldstr      "apos"
  IL_0050:  stloc.0
  IL_0051:  br.s       IL_0071
  IL_0053:  ldstr      "gt"
  IL_0058:  stloc.0
  IL_0059:  br.s       IL_0071
  IL_005b:  ldstr      "lt"
  IL_0060:  stloc.0
  IL_0061:  br.s       IL_0071
  IL_0063:  ldstr      "quot"
  IL_0068:  stloc.0
  IL_0069:  br.s       IL_0071
  IL_006b:  ldstr      "default"
  IL_0070:  stloc.0
  IL_0071:  ldloc.0
  IL_0072:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void FunctionAvailable()
    {
        // Based on https://github.com/dotnet/runtime/blob/a30de6d40f69ef612b514344a5ec83fffd10b957/src/libraries/System.Private.Xml/src/System/Xml/Xsl/XsltOld/XsltCompileContext.cs#L451-L485
        // Buckets: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
        var source = """
assert("last");
assert("position");
assert("name");
assert("namespace-uri");
assert("local-name");
assert("count");
assert("id");
assert("string");
assert("concat");
assert("starts-with");
assert("contains");
assert("substring-before");
assert("substring-after");
assert("substring");
assert("string-length");
assert("normalize-space");
assert("translate");
assert("boolean");
assert("not");
assert("true");
assert("false");
assert("lang");
assert("number");
assert("sum");
assert("floor");
assert("ceiling");
assert("round");
 
assert(null, "default");
assert("", "default");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string value)
    {
        return value switch
        {
            "last" => "last",
            "position" => "position",
            "name" => "name",
            "namespace-uri" => "namespace-uri",
            "local-name" => "local-name",
            "count" => "count",
            "id" => "id",
            "string" => "string",
            "concat" => "concat",
            "starts-with" => "starts-with",
            "contains" => "contains",
            "substring-before" => "substring-before",
            "substring-after" => "substring-after",
            "substring" => "substring",
            "string-length" => "string-length",
            "normalize-space" => "normalize-space",
            "translate" => "translate",
            "boolean" => "boolean",
            "not" => "not",
            "true" => "true",
            "false" => "false",
            "lang" => "lang",
            "number" => "number",
            "sum" => "sum",
            "floor" => "floor",
            "ceiling" => "ceiling",
            "round" => "round",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size     1231 (0x4cf)
  .maxstack  2
  .locals init (string V_0,
                int V_1,
                char V_2)
  IL_0000:  ldarg.0
  IL_0001:  brfalse    IL_04c7
  IL_0006:  ldarg.0
  IL_0007:  call       "int string.Length.get"
  IL_000c:  stloc.1
  IL_000d:  ldloc.1
  IL_000e:  ldc.i4.2
  IL_000f:  sub
  IL_0010:  switch    (
        IL_02a8,
        IL_017a,
        IL_0056,
        IL_00c7,
        IL_00fe,
        IL_015d,
        IL_008d,
        IL_0140,
        IL_023f,
        IL_02fc,
        IL_04c7,
        IL_00aa,
        IL_04c7,
        IL_0123,
        IL_0311)
  IL_0051:  br         IL_04c7
  IL_0056:  ldarg.0
  IL_0057:  ldc.i4.2
  IL_0058:  call       "char string.this[int].get"
  IL_005d:  stloc.2
  IL_005e:  ldloc.2
  IL_005f:  ldc.i4.s   110
  IL_0061:  bgt.un.s   IL_0078
  IL_0063:  ldloc.2
  IL_0064:  ldc.i4.s   109
  IL_0066:  beq        IL_01ac
  IL_006b:  ldloc.2
  IL_006c:  ldc.i4.s   110
  IL_006e:  beq        IL_01d6
  IL_0073:  br         IL_04c7
  IL_0078:  ldloc.2
  IL_0079:  ldc.i4.s   115
  IL_007b:  beq        IL_0197
  IL_0080:  ldloc.2
  IL_0081:  ldc.i4.s   117
  IL_0083:  beq        IL_01c1
  IL_0088:  br         IL_04c7
  IL_008d:  ldarg.0
  IL_008e:  ldc.i4.0
  IL_008f:  call       "char string.this[int].get"
  IL_0094:  stloc.2
  IL_0095:  ldloc.2
  IL_0096:  ldc.i4.s   99
  IL_0098:  beq        IL_0200
  IL_009d:  ldloc.2
  IL_009e:  ldc.i4.s   112
  IL_00a0:  beq        IL_01eb
  IL_00a5:  br         IL_04c7
  IL_00aa:  ldarg.0
  IL_00ab:  ldc.i4.0
  IL_00ac:  call       "char string.this[int].get"
  IL_00b1:  stloc.2
  IL_00b2:  ldloc.2
  IL_00b3:  ldc.i4.s   110
  IL_00b5:  beq        IL_0215
  IL_00ba:  ldloc.2
  IL_00bb:  ldc.i4.s   115
  IL_00bd:  beq        IL_022a
  IL_00c2:  br         IL_04c7
  IL_00c7:  ldarg.0
  IL_00c8:  ldc.i4.4
  IL_00c9:  call       "char string.this[int].get"
  IL_00ce:  stloc.2
  IL_00cf:  ldloc.2
  IL_00d0:  ldc.i4.s   101
  IL_00d2:  bgt.un.s   IL_00e9
  IL_00d4:  ldloc.2
  IL_00d5:  ldc.i4.s   100
  IL_00d7:  beq        IL_0293
  IL_00dc:  ldloc.2
  IL_00dd:  ldc.i4.s   101
  IL_00df:  beq        IL_0269
  IL_00e4:  br         IL_04c7
  IL_00e9:  ldloc.2
  IL_00ea:  ldc.i4.s   114
  IL_00ec:  beq        IL_027e
  IL_00f1:  ldloc.2
  IL_00f2:  ldc.i4.s   116
  IL_00f4:  beq        IL_0254
  IL_00f9:  br         IL_04c7
  IL_00fe:  ldarg.0
  IL_00ff:  ldc.i4.0
  IL_0100:  call       "char string.this[int].get"
  IL_0105:  stloc.2
  IL_0106:  ldloc.2
  IL_0107:  ldc.i4.s   99
  IL_0109:  beq        IL_02d2
  IL_010e:  ldloc.2
  IL_010f:  ldc.i4.s   110
  IL_0111:  beq        IL_02e7
  IL_0116:  ldloc.2
  IL_0117:  ldc.i4.s   115
  IL_0119:  beq        IL_02bd
  IL_011e:  br         IL_04c7
  IL_0123:  ldarg.0
  IL_0124:  ldc.i4.0
  IL_0125:  call       "char string.this[int].get"
  IL_012a:  stloc.2
  IL_012b:  ldloc.2
  IL_012c:  ldc.i4.s   110
  IL_012e:  beq        IL_033b
  IL_0133:  ldloc.2
  IL_0134:  ldc.i4.s   115
  IL_0136:  beq        IL_0326
  IL_013b:  br         IL_04c7
  IL_0140:  ldarg.0
  IL_0141:  ldc.i4.0
  IL_0142:  call       "char string.this[int].get"
  IL_0147:  stloc.2
  IL_0148:  ldloc.2
  IL_0149:  ldc.i4.s   115
  IL_014b:  beq        IL_0350
  IL_0150:  ldloc.2
  IL_0151:  ldc.i4.s   116
  IL_0153:  beq        IL_0365
  IL_0158:  br         IL_04c7
  IL_015d:  ldarg.0
  IL_015e:  ldc.i4.0
  IL_015f:  call       "char string.this[int].get"
  IL_0164:  stloc.2
  IL_0165:  ldloc.2
  IL_0166:  ldc.i4.s   98
  IL_0168:  beq        IL_037a
  IL_016d:  ldloc.2
  IL_016e:  ldc.i4.s   99
  IL_0170:  beq        IL_038f
  IL_0175:  br         IL_04c7
  IL_017a:  ldarg.0
  IL_017b:  ldc.i4.0
  IL_017c:  call       "char string.this[int].get"
  IL_0181:  stloc.2
  IL_0182:  ldloc.2
  IL_0183:  ldc.i4.s   110
  IL_0185:  beq        IL_03a4
  IL_018a:  ldloc.2
  IL_018b:  ldc.i4.s   115
  IL_018d:  beq        IL_03b9
  IL_0192:  br         IL_04c7
  IL_0197:  ldarg.0
  IL_0198:  ldstr      "last"
  IL_019d:  call       "bool string.op_Equality(string, string)"
  IL_01a2:  brtrue     IL_03ce
  IL_01a7:  br         IL_04c7
  IL_01ac:  ldarg.0
  IL_01ad:  ldstr      "name"
  IL_01b2:  call       "bool string.op_Equality(string, string)"
  IL_01b7:  brtrue     IL_03e4
  IL_01bc:  br         IL_04c7
  IL_01c1:  ldarg.0
  IL_01c2:  ldstr      "true"
  IL_01c7:  call       "bool string.op_Equality(string, string)"
  IL_01cc:  brtrue     IL_0487
  IL_01d1:  br         IL_04c7
  IL_01d6:  ldarg.0
  IL_01d7:  ldstr      "lang"
  IL_01dc:  call       "bool string.op_Equality(string, string)"
  IL_01e1:  brtrue     IL_0497
  IL_01e6:  br         IL_04c7
  IL_01eb:  ldarg.0
  IL_01ec:  ldstr      "position"
  IL_01f1:  call       "bool string.op_Equality(string, string)"
  IL_01f6:  brtrue     IL_03d9
  IL_01fb:  br         IL_04c7
  IL_0200:  ldarg.0
  IL_0201:  ldstr      "contains"
  IL_0206:  call       "bool string.op_Equality(string, string)"
  IL_020b:  brtrue     IL_043c
  IL_0210:  br         IL_04c7
  IL_0215:  ldarg.0
  IL_0216:  ldstr      "namespace-uri"
  IL_021b:  call       "bool string.op_Equality(string, string)"
  IL_0220:  brtrue     IL_03ef
  IL_0225:  br         IL_04c7
  IL_022a:  ldarg.0
  IL_022b:  ldstr      "string-length"
  IL_0230:  call       "bool string.op_Equality(string, string)"
  IL_0235:  brtrue     IL_045f
  IL_023a:  br         IL_04c7
  IL_023f:  ldarg.0
  IL_0240:  ldstr      "local-name"
  IL_0245:  call       "bool string.op_Equality(string, string)"
  IL_024a:  brtrue     IL_03fa
  IL_024f:  br         IL_04c7
  IL_0254:  ldarg.0
  IL_0255:  ldstr      "count"
  IL_025a:  call       "bool string.op_Equality(string, string)"
  IL_025f:  brtrue     IL_0405
  IL_0264:  br         IL_04c7
  IL_0269:  ldarg.0
  IL_026a:  ldstr      "false"
  IL_026f:  call       "bool string.op_Equality(string, string)"
  IL_0274:  brtrue     IL_048f
  IL_0279:  br         IL_04c7
  IL_027e:  ldarg.0
  IL_027f:  ldstr      "floor"
  IL_0284:  call       "bool string.op_Equality(string, string)"
  IL_0289:  brtrue     IL_04af
  IL_028e:  br         IL_04c7
  IL_0293:  ldarg.0
  IL_0294:  ldstr      "round"
  IL_0299:  call       "bool string.op_Equality(string, string)"
  IL_029e:  brtrue     IL_04bf
  IL_02a3:  br         IL_04c7
  IL_02a8:  ldarg.0
  IL_02a9:  ldstr      "id"
  IL_02ae:  call       "bool string.op_Equality(string, string)"
  IL_02b3:  brtrue     IL_0410
  IL_02b8:  br         IL_04c7
  IL_02bd:  ldarg.0
  IL_02be:  ldstr      "string"
  IL_02c3:  call       "bool string.op_Equality(string, string)"
  IL_02c8:  brtrue     IL_041b
  IL_02cd:  br         IL_04c7
  IL_02d2:  ldarg.0
  IL_02d3:  ldstr      "concat"
  IL_02d8:  call       "bool string.op_Equality(string, string)"
  IL_02dd:  brtrue     IL_0426
  IL_02e2:  br         IL_04c7
  IL_02e7:  ldarg.0
  IL_02e8:  ldstr      "number"
  IL_02ed:  call       "bool string.op_Equality(string, string)"
  IL_02f2:  brtrue     IL_049f
  IL_02f7:  br         IL_04c7
  IL_02fc:  ldarg.0
  IL_02fd:  ldstr      "starts-with"
  IL_0302:  call       "bool string.op_Equality(string, string)"
  IL_0307:  brtrue     IL_0431
  IL_030c:  br         IL_04c7
  IL_0311:  ldarg.0
  IL_0312:  ldstr      "substring-before"
  IL_0317:  call       "bool string.op_Equality(string, string)"
  IL_031c:  brtrue     IL_0447
  IL_0321:  br         IL_04c7
  IL_0326:  ldarg.0
  IL_0327:  ldstr      "substring-after"
  IL_032c:  call       "bool string.op_Equality(string, string)"
  IL_0331:  brtrue     IL_044f
  IL_0336:  br         IL_04c7
  IL_033b:  ldarg.0
  IL_033c:  ldstr      "normalize-space"
  IL_0341:  call       "bool string.op_Equality(string, string)"
  IL_0346:  brtrue     IL_0467
  IL_034b:  br         IL_04c7
  IL_0350:  ldarg.0
  IL_0351:  ldstr      "substring"
  IL_0356:  call       "bool string.op_Equality(string, string)"
  IL_035b:  brtrue     IL_0457
  IL_0360:  br         IL_04c7
  IL_0365:  ldarg.0
  IL_0366:  ldstr      "translate"
  IL_036b:  call       "bool string.op_Equality(string, string)"
  IL_0370:  brtrue     IL_046f
  IL_0375:  br         IL_04c7
  IL_037a:  ldarg.0
  IL_037b:  ldstr      "boolean"
  IL_0380:  call       "bool string.op_Equality(string, string)"
  IL_0385:  brtrue     IL_0477
  IL_038a:  br         IL_04c7
  IL_038f:  ldarg.0
  IL_0390:  ldstr      "ceiling"
  IL_0395:  call       "bool string.op_Equality(string, string)"
  IL_039a:  brtrue     IL_04b7
  IL_039f:  br         IL_04c7
  IL_03a4:  ldarg.0
  IL_03a5:  ldstr      "not"
  IL_03aa:  call       "bool string.op_Equality(string, string)"
  IL_03af:  brtrue     IL_047f
  IL_03b4:  br         IL_04c7
  IL_03b9:  ldarg.0
  IL_03ba:  ldstr      "sum"
  IL_03bf:  call       "bool string.op_Equality(string, string)"
  IL_03c4:  brtrue     IL_04a7
  IL_03c9:  br         IL_04c7
  IL_03ce:  ldstr      "last"
  IL_03d3:  stloc.0
  IL_03d4:  br         IL_04cd
  IL_03d9:  ldstr      "position"
  IL_03de:  stloc.0
  IL_03df:  br         IL_04cd
  IL_03e4:  ldstr      "name"
  IL_03e9:  stloc.0
  IL_03ea:  br         IL_04cd
  IL_03ef:  ldstr      "namespace-uri"
  IL_03f4:  stloc.0
  IL_03f5:  br         IL_04cd
  IL_03fa:  ldstr      "local-name"
  IL_03ff:  stloc.0
  IL_0400:  br         IL_04cd
  IL_0405:  ldstr      "count"
  IL_040a:  stloc.0
  IL_040b:  br         IL_04cd
  IL_0410:  ldstr      "id"
  IL_0415:  stloc.0
  IL_0416:  br         IL_04cd
  IL_041b:  ldstr      "string"
  IL_0420:  stloc.0
  IL_0421:  br         IL_04cd
  IL_0426:  ldstr      "concat"
  IL_042b:  stloc.0
  IL_042c:  br         IL_04cd
  IL_0431:  ldstr      "starts-with"
  IL_0436:  stloc.0
  IL_0437:  br         IL_04cd
  IL_043c:  ldstr      "contains"
  IL_0441:  stloc.0
  IL_0442:  br         IL_04cd
  IL_0447:  ldstr      "substring-before"
  IL_044c:  stloc.0
  IL_044d:  br.s       IL_04cd
  IL_044f:  ldstr      "substring-after"
  IL_0454:  stloc.0
  IL_0455:  br.s       IL_04cd
  IL_0457:  ldstr      "substring"
  IL_045c:  stloc.0
  IL_045d:  br.s       IL_04cd
  IL_045f:  ldstr      "string-length"
  IL_0464:  stloc.0
  IL_0465:  br.s       IL_04cd
  IL_0467:  ldstr      "normalize-space"
  IL_046c:  stloc.0
  IL_046d:  br.s       IL_04cd
  IL_046f:  ldstr      "translate"
  IL_0474:  stloc.0
  IL_0475:  br.s       IL_04cd
  IL_0477:  ldstr      "boolean"
  IL_047c:  stloc.0
  IL_047d:  br.s       IL_04cd
  IL_047f:  ldstr      "not"
  IL_0484:  stloc.0
  IL_0485:  br.s       IL_04cd
  IL_0487:  ldstr      "true"
  IL_048c:  stloc.0
  IL_048d:  br.s       IL_04cd
  IL_048f:  ldstr      "false"
  IL_0494:  stloc.0
  IL_0495:  br.s       IL_04cd
  IL_0497:  ldstr      "lang"
  IL_049c:  stloc.0
  IL_049d:  br.s       IL_04cd
  IL_049f:  ldstr      "number"
  IL_04a4:  stloc.0
  IL_04a5:  br.s       IL_04cd
  IL_04a7:  ldstr      "sum"
  IL_04ac:  stloc.0
  IL_04ad:  br.s       IL_04cd
  IL_04af:  ldstr      "floor"
  IL_04b4:  stloc.0
  IL_04b5:  br.s       IL_04cd
  IL_04b7:  ldstr      "ceiling"
  IL_04bc:  stloc.0
  IL_04bd:  br.s       IL_04cd
  IL_04bf:  ldstr      "round"
  IL_04c4:  stloc.0
  IL_04c5:  br.s       IL_04cd
  IL_04c7:  ldstr      "default"
  IL_04cc:  stloc.0
  IL_04cd:  ldloc.0
  IL_04ce:  ret
}
""");
 
        comp = CreateCompilation(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size     1266 (0x4f2)
  .maxstack  2
  .locals init (string V_0,
                uint V_1)
  IL_0000:  ldarg.0
  IL_0001:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  ldc.i4     0x6ccaf138
  IL_000d:  bgt.un     IL_00da
  IL_0012:  ldloc.1
  IL_0013:  ldc.i4     0x39b1ddf4
  IL_0018:  bgt.un.s   IL_006e
  IL_001a:  ldloc.1
  IL_001b:  ldc.i4     0x1bd670a0
  IL_0020:  bgt.un.s   IL_0048
  IL_0022:  ldloc.1
  IL_0023:  ldc.i4     0xb069958
  IL_0028:  beq        IL_035e
  IL_002d:  ldloc.1
  IL_002e:  ldc.i4     0x17c16538
  IL_0033:  beq        IL_024d
  IL_0038:  ldloc.1
  IL_0039:  ldc.i4     0x1bd670a0
  IL_003e:  beq        IL_0388
  IL_0043:  br         IL_04ea
  IL_0048:  ldloc.1
  IL_0049:  ldc.i4     0x29b19c8a
  IL_004e:  beq        IL_0334
  IL_0053:  ldloc.1
  IL_0054:  ldc.i4     0x37386ae0
  IL_0059:  beq        IL_0238
  IL_005e:  ldloc.1
  IL_005f:  ldc.i4     0x39b1ddf4
  IL_0064:  beq        IL_0223
  IL_0069:  br         IL_04ea
  IL_006e:  ldloc.1
  IL_006f:  ldc.i4     0x4f0be23b
  IL_0074:  bgt.un.s   IL_009c
  IL_0076:  ldloc.1
  IL_0077:  ldc.i4     0x3b8c1a3c
  IL_007c:  beq        IL_020e
  IL_0081:  ldloc.1
  IL_0082:  ldc.i4     0x4db211e5
  IL_0087:  beq        IL_0349
  IL_008c:  ldloc.1
  IL_008d:  ldc.i4     0x4f0be23b
  IL_0092:  beq        IL_03dc
  IL_0097:  br         IL_04ea
  IL_009c:  ldloc.1
  IL_009d:  ldc.i4     0x63e1d819
  IL_00a2:  bgt.un.s   IL_00bf
  IL_00a4:  ldloc.1
  IL_00a5:  ldc.i4     0x57b8a51f
  IL_00aa:  beq        IL_02f5
  IL_00af:  ldloc.1
  IL_00b0:  ldc.i4     0x63e1d819
  IL_00b5:  beq        IL_01ba
  IL_00ba:  br         IL_04ea
  IL_00bf:  ldloc.1
  IL_00c0:  ldc.i4     0x65f46ebf
  IL_00c5:  beq        IL_031f
  IL_00ca:  ldloc.1
  IL_00cb:  ldc.i4     0x6ccaf138
  IL_00d0:  beq        IL_028c
  IL_00d5:  br         IL_04ea
  IL_00da:  ldloc.1
  IL_00db:  ldc.i4     0x9ba9b528
  IL_00e0:  bgt.un.s   IL_014e
  IL_00e2:  ldloc.1
  IL_00e3:  ldc.i4     0x89116dd3
  IL_00e8:  bgt.un.s   IL_0110
  IL_00ea:  ldloc.1
  IL_00eb:  ldc.i4     0x70ea3b55
  IL_00f0:  beq        IL_0373
  IL_00f5:  ldloc.1
  IL_00f6:  ldc.i4     0x7a1b637f
  IL_00fb:  beq        IL_02e0
  IL_0100:  ldloc.1
  IL_0101:  ldc.i4     0x89116dd3
  IL_0106:  beq        IL_0277
  IL_010b:  br         IL_04ea
  IL_0110:  ldloc.1
  IL_0111:  ldc.i4     0x934f4e0a
  IL_0116:  bgt.un.s   IL_0133
  IL_0118:  ldloc.1
  IL_0119:  ldc.i4     0x8d39bde6
  IL_011e:  beq        IL_01e4
  IL_0123:  ldloc.1
  IL_0124:  ldc.i4     0x934f4e0a
  IL_0129:  beq        IL_01cf
  IL_012e:  br         IL_04ea
  IL_0133:  ldloc.1
  IL_0134:  ldc.i4     0x961d0b4f
  IL_0139:  beq        IL_01f9
  IL_013e:  ldloc.1
  IL_013f:  ldc.i4     0x9ba9b528
  IL_0144:  beq        IL_02cb
  IL_0149:  br         IL_04ea
  IL_014e:  ldloc.1
  IL_014f:  ldc.i4     0xb9e59880
  IL_0154:  bgt.un.s   IL_017c
  IL_0156:  ldloc.1
  IL_0157:  ldc.i4     0xad0ecfd5
  IL_015c:  beq        IL_030a
  IL_0161:  ldloc.1
  IL_0162:  ldc.i4     0xb8e70c1d
  IL_0167:  beq        IL_03b2
  IL_016c:  ldloc.1
  IL_016d:  ldc.i4     0xb9e59880
  IL_0172:  beq        IL_03c7
  IL_0177:  br         IL_04ea
  IL_017c:  ldloc.1
  IL_017d:  ldc.i4     0xcf622408
  IL_0182:  bgt.un.s   IL_019f
  IL_0184:  ldloc.1
  IL_0185:  ldc.i4     0xc04f5db7
  IL_018a:  beq        IL_02b6
  IL_018f:  ldloc.1
  IL_0190:  ldc.i4     0xcf622408
  IL_0195:  beq        IL_02a1
  IL_019a:  br         IL_04ea
  IL_019f:  ldloc.1
  IL_01a0:  ldc.i4     0xdd4e3aa8
  IL_01a5:  beq        IL_039d
  IL_01aa:  ldloc.1
  IL_01ab:  ldc.i4     0xf5cf8c7d
  IL_01b0:  beq        IL_0262
  IL_01b5:  br         IL_04ea
  IL_01ba:  ldarg.0
  IL_01bb:  ldstr      "last"
  IL_01c0:  call       "bool string.op_Equality(string, string)"
  IL_01c5:  brtrue     IL_03f1
  IL_01ca:  br         IL_04ea
  IL_01cf:  ldarg.0
  IL_01d0:  ldstr      "position"
  IL_01d5:  call       "bool string.op_Equality(string, string)"
  IL_01da:  brtrue     IL_03fc
  IL_01df:  br         IL_04ea
  IL_01e4:  ldarg.0
  IL_01e5:  ldstr      "name"
  IL_01ea:  call       "bool string.op_Equality(string, string)"
  IL_01ef:  brtrue     IL_0407
  IL_01f4:  br         IL_04ea
  IL_01f9:  ldarg.0
  IL_01fa:  ldstr      "namespace-uri"
  IL_01ff:  call       "bool string.op_Equality(string, string)"
  IL_0204:  brtrue     IL_0412
  IL_0209:  br         IL_04ea
  IL_020e:  ldarg.0
  IL_020f:  ldstr      "local-name"
  IL_0214:  call       "bool string.op_Equality(string, string)"
  IL_0219:  brtrue     IL_041d
  IL_021e:  br         IL_04ea
  IL_0223:  ldarg.0
  IL_0224:  ldstr      "count"
  IL_0229:  call       "bool string.op_Equality(string, string)"
  IL_022e:  brtrue     IL_0428
  IL_0233:  br         IL_04ea
  IL_0238:  ldarg.0
  IL_0239:  ldstr      "id"
  IL_023e:  call       "bool string.op_Equality(string, string)"
  IL_0243:  brtrue     IL_0433
  IL_0248:  br         IL_04ea
  IL_024d:  ldarg.0
  IL_024e:  ldstr      "string"
  IL_0253:  call       "bool string.op_Equality(string, string)"
  IL_0258:  brtrue     IL_043e
  IL_025d:  br         IL_04ea
  IL_0262:  ldarg.0
  IL_0263:  ldstr      "concat"
  IL_0268:  call       "bool string.op_Equality(string, string)"
  IL_026d:  brtrue     IL_0449
  IL_0272:  br         IL_04ea
  IL_0277:  ldarg.0
  IL_0278:  ldstr      "starts-with"
  IL_027d:  call       "bool string.op_Equality(string, string)"
  IL_0282:  brtrue     IL_0454
  IL_0287:  br         IL_04ea
  IL_028c:  ldarg.0
  IL_028d:  ldstr      "contains"
  IL_0292:  call       "bool string.op_Equality(string, string)"
  IL_0297:  brtrue     IL_045f
  IL_029c:  br         IL_04ea
  IL_02a1:  ldarg.0
  IL_02a2:  ldstr      "substring-before"
  IL_02a7:  call       "bool string.op_Equality(string, string)"
  IL_02ac:  brtrue     IL_046a
  IL_02b1:  br         IL_04ea
  IL_02b6:  ldarg.0
  IL_02b7:  ldstr      "substring-after"
  IL_02bc:  call       "bool string.op_Equality(string, string)"
  IL_02c1:  brtrue     IL_0472
  IL_02c6:  br         IL_04ea
  IL_02cb:  ldarg.0
  IL_02cc:  ldstr      "substring"
  IL_02d1:  call       "bool string.op_Equality(string, string)"
  IL_02d6:  brtrue     IL_047a
  IL_02db:  br         IL_04ea
  IL_02e0:  ldarg.0
  IL_02e1:  ldstr      "string-length"
  IL_02e6:  call       "bool string.op_Equality(string, string)"
  IL_02eb:  brtrue     IL_0482
  IL_02f0:  br         IL_04ea
  IL_02f5:  ldarg.0
  IL_02f6:  ldstr      "normalize-space"
  IL_02fb:  call       "bool string.op_Equality(string, string)"
  IL_0300:  brtrue     IL_048a
  IL_0305:  br         IL_04ea
  IL_030a:  ldarg.0
  IL_030b:  ldstr      "translate"
  IL_0310:  call       "bool string.op_Equality(string, string)"
  IL_0315:  brtrue     IL_0492
  IL_031a:  br         IL_04ea
  IL_031f:  ldarg.0
  IL_0320:  ldstr      "boolean"
  IL_0325:  call       "bool string.op_Equality(string, string)"
  IL_032a:  brtrue     IL_049a
  IL_032f:  br         IL_04ea
  IL_0334:  ldarg.0
  IL_0335:  ldstr      "not"
  IL_033a:  call       "bool string.op_Equality(string, string)"
  IL_033f:  brtrue     IL_04a2
  IL_0344:  br         IL_04ea
  IL_0349:  ldarg.0
  IL_034a:  ldstr      "true"
  IL_034f:  call       "bool string.op_Equality(string, string)"
  IL_0354:  brtrue     IL_04aa
  IL_0359:  br         IL_04ea
  IL_035e:  ldarg.0
  IL_035f:  ldstr      "false"
  IL_0364:  call       "bool string.op_Equality(string, string)"
  IL_0369:  brtrue     IL_04b2
  IL_036e:  br         IL_04ea
  IL_0373:  ldarg.0
  IL_0374:  ldstr      "lang"
  IL_0379:  call       "bool string.op_Equality(string, string)"
  IL_037e:  brtrue     IL_04ba
  IL_0383:  br         IL_04ea
  IL_0388:  ldarg.0
  IL_0389:  ldstr      "number"
  IL_038e:  call       "bool string.op_Equality(string, string)"
  IL_0393:  brtrue     IL_04c2
  IL_0398:  br         IL_04ea
  IL_039d:  ldarg.0
  IL_039e:  ldstr      "sum"
  IL_03a3:  call       "bool string.op_Equality(string, string)"
  IL_03a8:  brtrue     IL_04ca
  IL_03ad:  br         IL_04ea
  IL_03b2:  ldarg.0
  IL_03b3:  ldstr      "floor"
  IL_03b8:  call       "bool string.op_Equality(string, string)"
  IL_03bd:  brtrue     IL_04d2
  IL_03c2:  br         IL_04ea
  IL_03c7:  ldarg.0
  IL_03c8:  ldstr      "ceiling"
  IL_03cd:  call       "bool string.op_Equality(string, string)"
  IL_03d2:  brtrue     IL_04da
  IL_03d7:  br         IL_04ea
  IL_03dc:  ldarg.0
  IL_03dd:  ldstr      "round"
  IL_03e2:  call       "bool string.op_Equality(string, string)"
  IL_03e7:  brtrue     IL_04e2
  IL_03ec:  br         IL_04ea
  IL_03f1:  ldstr      "last"
  IL_03f6:  stloc.0
  IL_03f7:  br         IL_04f0
  IL_03fc:  ldstr      "position"
  IL_0401:  stloc.0
  IL_0402:  br         IL_04f0
  IL_0407:  ldstr      "name"
  IL_040c:  stloc.0
  IL_040d:  br         IL_04f0
  IL_0412:  ldstr      "namespace-uri"
  IL_0417:  stloc.0
  IL_0418:  br         IL_04f0
  IL_041d:  ldstr      "local-name"
  IL_0422:  stloc.0
  IL_0423:  br         IL_04f0
  IL_0428:  ldstr      "count"
  IL_042d:  stloc.0
  IL_042e:  br         IL_04f0
  IL_0433:  ldstr      "id"
  IL_0438:  stloc.0
  IL_0439:  br         IL_04f0
  IL_043e:  ldstr      "string"
  IL_0443:  stloc.0
  IL_0444:  br         IL_04f0
  IL_0449:  ldstr      "concat"
  IL_044e:  stloc.0
  IL_044f:  br         IL_04f0
  IL_0454:  ldstr      "starts-with"
  IL_0459:  stloc.0
  IL_045a:  br         IL_04f0
  IL_045f:  ldstr      "contains"
  IL_0464:  stloc.0
  IL_0465:  br         IL_04f0
  IL_046a:  ldstr      "substring-before"
  IL_046f:  stloc.0
  IL_0470:  br.s       IL_04f0
  IL_0472:  ldstr      "substring-after"
  IL_0477:  stloc.0
  IL_0478:  br.s       IL_04f0
  IL_047a:  ldstr      "substring"
  IL_047f:  stloc.0
  IL_0480:  br.s       IL_04f0
  IL_0482:  ldstr      "string-length"
  IL_0487:  stloc.0
  IL_0488:  br.s       IL_04f0
  IL_048a:  ldstr      "normalize-space"
  IL_048f:  stloc.0
  IL_0490:  br.s       IL_04f0
  IL_0492:  ldstr      "translate"
  IL_0497:  stloc.0
  IL_0498:  br.s       IL_04f0
  IL_049a:  ldstr      "boolean"
  IL_049f:  stloc.0
  IL_04a0:  br.s       IL_04f0
  IL_04a2:  ldstr      "not"
  IL_04a7:  stloc.0
  IL_04a8:  br.s       IL_04f0
  IL_04aa:  ldstr      "true"
  IL_04af:  stloc.0
  IL_04b0:  br.s       IL_04f0
  IL_04b2:  ldstr      "false"
  IL_04b7:  stloc.0
  IL_04b8:  br.s       IL_04f0
  IL_04ba:  ldstr      "lang"
  IL_04bf:  stloc.0
  IL_04c0:  br.s       IL_04f0
  IL_04c2:  ldstr      "number"
  IL_04c7:  stloc.0
  IL_04c8:  br.s       IL_04f0
  IL_04ca:  ldstr      "sum"
  IL_04cf:  stloc.0
  IL_04d0:  br.s       IL_04f0
  IL_04d2:  ldstr      "floor"
  IL_04d7:  stloc.0
  IL_04d8:  br.s       IL_04f0
  IL_04da:  ldstr      "ceiling"
  IL_04df:  stloc.0
  IL_04e0:  br.s       IL_04f0
  IL_04e2:  ldstr      "round"
  IL_04e7:  stloc.0
  IL_04e8:  br.s       IL_04f0
  IL_04ea:  ldstr      "default"
  IL_04ef:  stloc.0
  IL_04f0:  ldloc.0
  IL_04f1:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void NormalizeTimeZone()
    {
        // Based on https://github.com/dotnet/runtime/blob/a30de6d40f69ef612b514344a5ec83fffd10b957/src/libraries/System.ServiceModel.Syndication/src/System/ServiceModel/Syndication/DateTimeHelper.cs#L146-L212
        // Buckets: 1, 1, 2, 2, 2, 2
        var source = """
assert("UT");
assert("Z");
assert("GMT");
assert("A");
assert("B");
assert("C");
assert("D");
assert("EDT");
assert("E");
assert("EST");
assert("CDT");
assert("F");
assert("CST");
assert("MDT");
assert("G");
assert("MST");
assert("PDT");
assert("H");
assert("PST");
assert("I");
assert("K");
assert("L");
assert("M");
assert("N");
assert("O");
assert("P");
assert("Q");
assert("R");
assert("S");
assert("T");
assert("U");
assert("V");
assert("W");
assert("X");
assert("Y");
 
assert(null, "default");
assert("", "default");
assert("other", "default");
assert("3", "default");
assert("AMT", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string value)
    {
        return value switch
        {
            "UT" => "UT",
            "Z" => "Z",
            "GMT" => "GMT",
            "A" => "A",
            "B" => "B",
            "C" => "C",
            "D" => "D",
            "EDT" => "EDT",
            "E" => "E",
            "EST" => "EST",
            "CDT" => "CDT",
            "F" => "F",
            "CST" => "CST",
            "MDT" => "MDT",
            "G" => "G",
            "MST" => "MST",
            "PDT" => "PDT",
            "H" => "H",
            "PST" => "PST",
            "I" => "I",
            "K" => "K",
            "L" => "L",
            "M" => "M",
            "N" => "N",
            "O" => "O",
            "P" => "P",
            "Q" => "Q",
            "R" => "R",
            "S" => "S",
            "T" => "T",
            "U" => "U",
            "V" => "V",
            "W" => "W",
            "X" => "X",
            "Y" => "Y",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      757 (0x2f5)
  .maxstack  2
  .locals init (string V_0,
                int V_1,
                char V_2)
  IL_0000:  ldarg.0
  IL_0001:  brfalse    IL_02ed
  IL_0006:  ldarg.0
  IL_0007:  call       "int string.Length.get"
  IL_000c:  stloc.1
  IL_000d:  ldloc.1
  IL_000e:  ldc.i4.1
  IL_000f:  sub
  IL_0010:  switch    (
        IL_0026,
        IL_00de,
        IL_00a4)
  IL_0021:  br         IL_02ed
  IL_0026:  ldarg.0
  IL_0027:  ldc.i4.0
  IL_0028:  call       "char string.this[int].get"
  IL_002d:  stloc.2
  IL_002e:  ldloc.2
  IL_002f:  ldc.i4.s   65
  IL_0031:  sub
  IL_0032:  switch    (
        IL_01bd,
        IL_01c8,
        IL_01d3,
        IL_01de,
        IL_01f4,
        IL_0215,
        IL_0236,
        IL_0257,
        IL_026d,
        IL_02ed,
        IL_0275,
        IL_027d,
        IL_0285,
        IL_028d,
        IL_0295,
        IL_029d,
        IL_02a5,
        IL_02ad,
        IL_02b5,
        IL_02bd,
        IL_02c5,
        IL_02cd,
        IL_02d5,
        IL_02dd,
        IL_02e5,
        IL_01a7)
  IL_009f:  br         IL_02ed
  IL_00a4:  ldarg.0
  IL_00a5:  ldc.i4.0
  IL_00a6:  call       "char string.this[int].get"
  IL_00ab:  stloc.2
  IL_00ac:  ldloc.2
  IL_00ad:  ldc.i4.s   67
  IL_00af:  sub
  IL_00b0:  switch    (
        IL_012d,
        IL_02ed,
        IL_0108,
        IL_02ed,
        IL_00f3)
  IL_00c9:  ldloc.2
  IL_00ca:  ldc.i4.s   77
  IL_00cc:  beq        IL_0152
  IL_00d1:  ldloc.2
  IL_00d2:  ldc.i4.s   80
  IL_00d4:  beq        IL_0177
  IL_00d9:  br         IL_02ed
  IL_00de:  ldarg.0
  IL_00df:  ldstr      "UT"
  IL_00e4:  call       "bool string.op_Equality(string, string)"
  IL_00e9:  brtrue     IL_019c
  IL_00ee:  br         IL_02ed
  IL_00f3:  ldarg.0
  IL_00f4:  ldstr      "GMT"
  IL_00f9:  call       "bool string.op_Equality(string, string)"
  IL_00fe:  brtrue     IL_01b2
  IL_0103:  br         IL_02ed
  IL_0108:  ldarg.0
  IL_0109:  ldstr      "EDT"
  IL_010e:  call       "bool string.op_Equality(string, string)"
  IL_0113:  brtrue     IL_01e9
  IL_0118:  ldarg.0
  IL_0119:  ldstr      "EST"
  IL_011e:  call       "bool string.op_Equality(string, string)"
  IL_0123:  brtrue     IL_01ff
  IL_0128:  br         IL_02ed
  IL_012d:  ldarg.0
  IL_012e:  ldstr      "CDT"
  IL_0133:  call       "bool string.op_Equality(string, string)"
  IL_0138:  brtrue     IL_020a
  IL_013d:  ldarg.0
  IL_013e:  ldstr      "CST"
  IL_0143:  call       "bool string.op_Equality(string, string)"
  IL_0148:  brtrue     IL_0220
  IL_014d:  br         IL_02ed
  IL_0152:  ldarg.0
  IL_0153:  ldstr      "MDT"
  IL_0158:  call       "bool string.op_Equality(string, string)"
  IL_015d:  brtrue     IL_022b
  IL_0162:  ldarg.0
  IL_0163:  ldstr      "MST"
  IL_0168:  call       "bool string.op_Equality(string, string)"
  IL_016d:  brtrue     IL_0241
  IL_0172:  br         IL_02ed
  IL_0177:  ldarg.0
  IL_0178:  ldstr      "PDT"
  IL_017d:  call       "bool string.op_Equality(string, string)"
  IL_0182:  brtrue     IL_024c
  IL_0187:  ldarg.0
  IL_0188:  ldstr      "PST"
  IL_018d:  call       "bool string.op_Equality(string, string)"
  IL_0192:  brtrue     IL_0262
  IL_0197:  br         IL_02ed
  IL_019c:  ldstr      "UT"
  IL_01a1:  stloc.0
  IL_01a2:  br         IL_02f3
  IL_01a7:  ldstr      "Z"
  IL_01ac:  stloc.0
  IL_01ad:  br         IL_02f3
  IL_01b2:  ldstr      "GMT"
  IL_01b7:  stloc.0
  IL_01b8:  br         IL_02f3
  IL_01bd:  ldstr      "A"
  IL_01c2:  stloc.0
  IL_01c3:  br         IL_02f3
  IL_01c8:  ldstr      "B"
  IL_01cd:  stloc.0
  IL_01ce:  br         IL_02f3
  IL_01d3:  ldstr      "C"
  IL_01d8:  stloc.0
  IL_01d9:  br         IL_02f3
  IL_01de:  ldstr      "D"
  IL_01e3:  stloc.0
  IL_01e4:  br         IL_02f3
  IL_01e9:  ldstr      "EDT"
  IL_01ee:  stloc.0
  IL_01ef:  br         IL_02f3
  IL_01f4:  ldstr      "E"
  IL_01f9:  stloc.0
  IL_01fa:  br         IL_02f3
  IL_01ff:  ldstr      "EST"
  IL_0204:  stloc.0
  IL_0205:  br         IL_02f3
  IL_020a:  ldstr      "CDT"
  IL_020f:  stloc.0
  IL_0210:  br         IL_02f3
  IL_0215:  ldstr      "F"
  IL_021a:  stloc.0
  IL_021b:  br         IL_02f3
  IL_0220:  ldstr      "CST"
  IL_0225:  stloc.0
  IL_0226:  br         IL_02f3
  IL_022b:  ldstr      "MDT"
  IL_0230:  stloc.0
  IL_0231:  br         IL_02f3
  IL_0236:  ldstr      "G"
  IL_023b:  stloc.0
  IL_023c:  br         IL_02f3
  IL_0241:  ldstr      "MST"
  IL_0246:  stloc.0
  IL_0247:  br         IL_02f3
  IL_024c:  ldstr      "PDT"
  IL_0251:  stloc.0
  IL_0252:  br         IL_02f3
  IL_0257:  ldstr      "H"
  IL_025c:  stloc.0
  IL_025d:  br         IL_02f3
  IL_0262:  ldstr      "PST"
  IL_0267:  stloc.0
  IL_0268:  br         IL_02f3
  IL_026d:  ldstr      "I"
  IL_0272:  stloc.0
  IL_0273:  br.s       IL_02f3
  IL_0275:  ldstr      "K"
  IL_027a:  stloc.0
  IL_027b:  br.s       IL_02f3
  IL_027d:  ldstr      "L"
  IL_0282:  stloc.0
  IL_0283:  br.s       IL_02f3
  IL_0285:  ldstr      "M"
  IL_028a:  stloc.0
  IL_028b:  br.s       IL_02f3
  IL_028d:  ldstr      "N"
  IL_0292:  stloc.0
  IL_0293:  br.s       IL_02f3
  IL_0295:  ldstr      "O"
  IL_029a:  stloc.0
  IL_029b:  br.s       IL_02f3
  IL_029d:  ldstr      "P"
  IL_02a2:  stloc.0
  IL_02a3:  br.s       IL_02f3
  IL_02a5:  ldstr      "Q"
  IL_02aa:  stloc.0
  IL_02ab:  br.s       IL_02f3
  IL_02ad:  ldstr      "R"
  IL_02b2:  stloc.0
  IL_02b3:  br.s       IL_02f3
  IL_02b5:  ldstr      "S"
  IL_02ba:  stloc.0
  IL_02bb:  br.s       IL_02f3
  IL_02bd:  ldstr      "T"
  IL_02c2:  stloc.0
  IL_02c3:  br.s       IL_02f3
  IL_02c5:  ldstr      "U"
  IL_02ca:  stloc.0
  IL_02cb:  br.s       IL_02f3
  IL_02cd:  ldstr      "V"
  IL_02d2:  stloc.0
  IL_02d3:  br.s       IL_02f3
  IL_02d5:  ldstr      "W"
  IL_02da:  stloc.0
  IL_02db:  br.s       IL_02f3
  IL_02dd:  ldstr      "X"
  IL_02e2:  stloc.0
  IL_02e3:  br.s       IL_02f3
  IL_02e5:  ldstr      "Y"
  IL_02ea:  stloc.0
  IL_02eb:  br.s       IL_02f3
  IL_02ed:  ldstr      "default"
  IL_02f2:  stloc.0
  IL_02f3:  ldloc.0
  IL_02f4:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void EmitMatchCharacterClass()
    {
        // Based on https://github.com/dotnet/runtime/blob/a30de6d40f69ef612b514344a5ec83fffd10b957/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/RegexCompiler.cs#L5810-L5879
        // Buckets: 3, 3, 2
        var source = """
assert("\0\0\0\u03ff\ufffe\u07ff\ufffe\u07ff");
assert("\0\0\0\u03FF\0\0\0\0");
assert("\0\0\0\0\ufffe\u07FF\ufffe\u07ff");
assert("\0\0\0\0\0\0\ufffe\u07ff");
assert("\0\0\0\0\ufffe\u07FF\0\0");
assert("\0\0\0\u03FF\u007E\0\u007E\0");
assert("\0\0\0\u03FF\u007E\0\0\0");
assert(null, "default");
assert("", "default");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string value)
    {
        return value switch
        {
            "\0\0\0\u03ff\ufffe\u07ff\ufffe\u07ff" => "\0\0\0\u03ff\ufffe\u07ff\ufffe\u07ff",
            "\0\0\0\u03FF\0\0\0\0" => "\0\0\0\u03FF\0\0\0\0",
            "\0\0\0\0\ufffe\u07FF\ufffe\u07ff" => "\0\0\0\0\ufffe\u07FF\ufffe\u07ff",
            "\0\0\0\0\0\0\ufffe\u07ff" => "\0\0\0\0\0\0\ufffe\u07ff",
            "\0\0\0\0\ufffe\u07FF\0\0" => "\0\0\0\0\ufffe\u07FF\0\0",
            "\0\0\0\u03FF\u007E\0\u007E\0" => "\0\0\0\u03FF\u007E\0\u007E\0",
            "\0\0\0\u03FF\0\0\u007E\0" => "\0\0\0\u03FF\0\0\u007E\0",
            "\0\0\0\u03FF\u007E\0\0\0" => "\0\0\0\u03FF\u007E\0\0\0",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        CompileAndVerify(comp, expectedOutput: "RAN");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void EmitMatchCharacterClass_2()
    {
        // Based on https://github.com/dotnet/runtime/blob/a30de6d40f69ef612b514344a5ec83fffd10b957/src/libraries/System.Text.RegularExpressions/src/System/Text/RegularExpressions/RegexCompiler.cs#L5810-L5879
        var source = """
assert("00100000");
assert("00100001");
assert("00010000");
assert("00010001");
assert("00001000");
assert("00001001");
assert("00000100");
assert(null, "default");
assert("", "default");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string value)
    {
        return value switch
        {
            "00100000" => "00100000",
            "00100001" => "00100001",
            "00010000" => "00010000",
            "00010001" => "00010001",
            "00001000" => "00001000",
            "00001001" => "00001001",
            "00000100" => "00000100",
            "00000101" => "00000101",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      223 (0xdf)
  .maxstack  2
  .locals init (string V_0,
                int V_1,
                char V_2)
  IL_0000:  ldarg.0
  IL_0001:  brfalse    IL_00d7
  IL_0006:  ldarg.0
  IL_0007:  call       "int string.Length.get"
  IL_000c:  stloc.1
  IL_000d:  ldloc.1
  IL_000e:  ldc.i4.8
  IL_000f:  bne.un     IL_00d7
  IL_0014:  ldarg.0
  IL_0015:  ldc.i4.7
  IL_0016:  call       "char string.this[int].get"
  IL_001b:  stloc.2
  IL_001c:  ldloc.2
  IL_001d:  ldc.i4.s   48
  IL_001f:  beq.s      IL_002b
  IL_0021:  ldloc.2
  IL_0022:  ldc.i4.s   49
  IL_0024:  beq.s      IL_0061
  IL_0026:  br         IL_00d7
  IL_002b:  ldarg.0
  IL_002c:  ldstr      "00100000"
  IL_0031:  call       "bool string.op_Equality(string, string)"
  IL_0036:  brtrue.s   IL_0097
  IL_0038:  ldarg.0
  IL_0039:  ldstr      "00010000"
  IL_003e:  call       "bool string.op_Equality(string, string)"
  IL_0043:  brtrue.s   IL_00a7
  IL_0045:  ldarg.0
  IL_0046:  ldstr      "00001000"
  IL_004b:  call       "bool string.op_Equality(string, string)"
  IL_0050:  brtrue.s   IL_00b7
  IL_0052:  ldarg.0
  IL_0053:  ldstr      "00000100"
  IL_0058:  call       "bool string.op_Equality(string, string)"
  IL_005d:  brtrue.s   IL_00c7
  IL_005f:  br.s       IL_00d7
  IL_0061:  ldarg.0
  IL_0062:  ldstr      "00100001"
  IL_0067:  call       "bool string.op_Equality(string, string)"
  IL_006c:  brtrue.s   IL_009f
  IL_006e:  ldarg.0
  IL_006f:  ldstr      "00010001"
  IL_0074:  call       "bool string.op_Equality(string, string)"
  IL_0079:  brtrue.s   IL_00af
  IL_007b:  ldarg.0
  IL_007c:  ldstr      "00001001"
  IL_0081:  call       "bool string.op_Equality(string, string)"
  IL_0086:  brtrue.s   IL_00bf
  IL_0088:  ldarg.0
  IL_0089:  ldstr      "00000101"
  IL_008e:  call       "bool string.op_Equality(string, string)"
  IL_0093:  brtrue.s   IL_00cf
  IL_0095:  br.s       IL_00d7
  IL_0097:  ldstr      "00100000"
  IL_009c:  stloc.0
  IL_009d:  br.s       IL_00dd
  IL_009f:  ldstr      "00100001"
  IL_00a4:  stloc.0
  IL_00a5:  br.s       IL_00dd
  IL_00a7:  ldstr      "00010000"
  IL_00ac:  stloc.0
  IL_00ad:  br.s       IL_00dd
  IL_00af:  ldstr      "00010001"
  IL_00b4:  stloc.0
  IL_00b5:  br.s       IL_00dd
  IL_00b7:  ldstr      "00001000"
  IL_00bc:  stloc.0
  IL_00bd:  br.s       IL_00dd
  IL_00bf:  ldstr      "00001001"
  IL_00c4:  stloc.0
  IL_00c5:  br.s       IL_00dd
  IL_00c7:  ldstr      "00000100"
  IL_00cc:  stloc.0
  IL_00cd:  br.s       IL_00dd
  IL_00cf:  ldstr      "00000101"
  IL_00d4:  stloc.0
  IL_00d5:  br.s       IL_00dd
  IL_00d7:  ldstr      "default"
  IL_00dc:  stloc.0
  IL_00dd:  ldloc.0
  IL_00de:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void AcceptCommand()
    {
        // Based on https://github.com/dotnet/runtime/blob/a30de6d40f69ef612b514344a5ec83fffd10b957/src/mono/wasm/debugger/BrowserDebugProxy/MonoProxy.cs#L274-L572
        // Buckets: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
        var source = """
assert(null, "default");
assert("", "default");
assert("DotnetDebugger.setDebuggerProperty", "19");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string value)
    {
        switch (value)
        {
            case "Target.attachToTarget":
                return "1";
 
            case "Debugger.enable":
                return "2";
 
            case "Debugger.getScriptSource":
                return "3";
 
            case "Runtime.compileScript":
                return "4";
 
            case "Debugger.getPossibleBreakpoints":
                return "5";
 
            case "Debugger.setBreakpoint":
                return "6";
 
            case "Debugger.setBreakpointByUrl":
                return "7";
 
            case "Debugger.removeBreakpoint":
                return "8";
 
            case "Debugger.resume":
                return "9";
 
            case "Debugger.stepInto":
                return "10";
 
            case "Debugger.setVariableValue":
                return "11";
 
            case "Debugger.stepOut":
                return "12";
 
            case "Debugger.stepOver":
                return "13";
 
            case "Runtime.evaluate":
                return "14";
 
            case "Debugger.evaluateOnCallFrame":
                return "15";
 
            case "Runtime.getProperties":
                return "16";
 
            case "Runtime.releaseObject":
                return "17";
 
            case "Debugger.setPauseOnExceptions":
                return "18";
 
            case "DotnetDebugger.setDebuggerProperty":
                return "19";
 
            case "DotnetDebugger.setNextIP":
                return "20";
 
            case "DotnetDebugger.applyUpdates":
                return "21";
 
            case "DotnetDebugger.addSymbolServerUrl":
                return "22";
 
            case "DotnetDebugger.getMethodLocation":
                return "23";
 
            case "Runtime.callFunctionOn":
                return "24";
 
            default:
                return "default";
        }
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size     1022 (0x3fe)
  .maxstack  2
  .locals init (int V_0,
                char V_1)
  IL_0000:  ldarg.0
  IL_0001:  brfalse    IL_03f8
  IL_0006:  ldarg.0
  IL_0007:  call       "int string.Length.get"
  IL_000c:  stloc.0
  IL_000d:  ldloc.0
  IL_000e:  ldc.i4.s   15
  IL_0010:  sub
  IL_0011:  switch    (
        IL_00a2,
        IL_0153,
        IL_0135,
        IL_03f8,
        IL_03f8,
        IL_03f8,
        IL_006b,
        IL_00dd,
        IL_03f8,
        IL_00c0,
        IL_0117,
        IL_03f8,
        IL_00fa,
        IL_02ff,
        IL_0314,
        IL_03f8,
        IL_0218,
        IL_0353,
        IL_033e,
        IL_0329)
  IL_0066:  br         IL_03f8
  IL_006b:  ldarg.0
  IL_006c:  ldc.i4.8
  IL_006d:  call       "char string.this[int].get"
  IL_0072:  stloc.1
  IL_0073:  ldloc.1
  IL_0074:  ldc.i4.s   103
  IL_0076:  bgt.un.s   IL_008d
  IL_0078:  ldloc.1
  IL_0079:  ldc.i4.s   99
  IL_007b:  beq        IL_0185
  IL_0080:  ldloc.1
  IL_0081:  ldc.i4.s   103
  IL_0083:  beq        IL_019a
  IL_0088:  br         IL_03f8
  IL_008d:  ldloc.1
  IL_008e:  ldc.i4.s   114
  IL_0090:  beq        IL_01af
  IL_0095:  ldloc.1
  IL_0096:  ldc.i4.s   116
  IL_0098:  beq        IL_0170
  IL_009d:  br         IL_03f8
  IL_00a2:  ldarg.0
  IL_00a3:  ldc.i4.s   9
  IL_00a5:  call       "char string.this[int].get"
  IL_00aa:  stloc.1
  IL_00ab:  ldloc.1
  IL_00ac:  ldc.i4.s   101
  IL_00ae:  beq        IL_01c4
  IL_00b3:  ldloc.1
  IL_00b4:  ldc.i4.s   114
  IL_00b6:  beq        IL_01d9
  IL_00bb:  br         IL_03f8
  IL_00c0:  ldarg.0
  IL_00c1:  ldc.i4.1
  IL_00c2:  call       "char string.this[int].get"
  IL_00c7:  stloc.1
  IL_00c8:  ldloc.1
  IL_00c9:  ldc.i4.s   101
  IL_00cb:  beq        IL_01ee
  IL_00d0:  ldloc.1
  IL_00d1:  ldc.i4.s   111
  IL_00d3:  beq        IL_0203
  IL_00d8:  br         IL_03f8
  IL_00dd:  ldarg.0
  IL_00de:  ldc.i4.0
  IL_00df:  call       "char string.this[int].get"
  IL_00e4:  stloc.1
  IL_00e5:  ldloc.1
  IL_00e6:  ldc.i4.s   68
  IL_00e8:  beq        IL_022d
  IL_00ed:  ldloc.1
  IL_00ee:  ldc.i4.s   82
  IL_00f0:  beq        IL_0242
  IL_00f5:  br         IL_03f8
  IL_00fa:  ldarg.0
  IL_00fb:  ldc.i4.1
  IL_00fc:  call       "char string.this[int].get"
  IL_0101:  stloc.1
  IL_0102:  ldloc.1
  IL_0103:  ldc.i4.s   101
  IL_0105:  beq        IL_0257
  IL_010a:  ldloc.1
  IL_010b:  ldc.i4.s   111
  IL_010d:  beq        IL_026c
  IL_0112:  br         IL_03f8
  IL_0117:  ldarg.0
  IL_0118:  ldc.i4.s   9
  IL_011a:  call       "char string.this[int].get"
  IL_011f:  stloc.1
  IL_0120:  ldloc.1
  IL_0121:  ldc.i4.s   114
  IL_0123:  beq        IL_0281
  IL_0128:  ldloc.1
  IL_0129:  ldc.i4.s   115
  IL_012b:  beq        IL_0296
  IL_0130:  br         IL_03f8
  IL_0135:  ldarg.0
  IL_0136:  ldc.i4.s   13
  IL_0138:  call       "char string.this[int].get"
  IL_013d:  stloc.1
  IL_013e:  ldloc.1
  IL_013f:  ldc.i4.s   73
  IL_0141:  beq        IL_02ab
  IL_0146:  ldloc.1
  IL_0147:  ldc.i4.s   79
  IL_0149:  beq        IL_02c0
  IL_014e:  br         IL_03f8
  IL_0153:  ldarg.0
  IL_0154:  ldc.i4.0
  IL_0155:  call       "char string.this[int].get"
  IL_015a:  stloc.1
  IL_015b:  ldloc.1
  IL_015c:  ldc.i4.s   68
  IL_015e:  beq        IL_02d5
  IL_0163:  ldloc.1
  IL_0164:  ldc.i4.s   82
  IL_0166:  beq        IL_02ea
  IL_016b:  br         IL_03f8
  IL_0170:  ldarg.0
  IL_0171:  ldstr      "Target.attachToTarget"
  IL_0176:  call       "bool string.op_Equality(string, string)"
  IL_017b:  brtrue     IL_0368
  IL_0180:  br         IL_03f8
  IL_0185:  ldarg.0
  IL_0186:  ldstr      "Runtime.compileScript"
  IL_018b:  call       "bool string.op_Equality(string, string)"
  IL_0190:  brtrue     IL_037a
  IL_0195:  br         IL_03f8
  IL_019a:  ldarg.0
  IL_019b:  ldstr      "Runtime.getProperties"
  IL_01a0:  call       "bool string.op_Equality(string, string)"
  IL_01a5:  brtrue     IL_03c2
  IL_01aa:  br         IL_03f8
  IL_01af:  ldarg.0
  IL_01b0:  ldstr      "Runtime.releaseObject"
  IL_01b5:  call       "bool string.op_Equality(string, string)"
  IL_01ba:  brtrue     IL_03c8
  IL_01bf:  br         IL_03f8
  IL_01c4:  ldarg.0
  IL_01c5:  ldstr      "Debugger.enable"
  IL_01ca:  call       "bool string.op_Equality(string, string)"
  IL_01cf:  brtrue     IL_036e
  IL_01d4:  br         IL_03f8
  IL_01d9:  ldarg.0
  IL_01da:  ldstr      "Debugger.resume"
  IL_01df:  call       "bool string.op_Equality(string, string)"
  IL_01e4:  brtrue     IL_0398
  IL_01e9:  br         IL_03f8
  IL_01ee:  ldarg.0
  IL_01ef:  ldstr      "Debugger.getScriptSource"
  IL_01f4:  call       "bool string.op_Equality(string, string)"
  IL_01f9:  brtrue     IL_0374
  IL_01fe:  br         IL_03f8
  IL_0203:  ldarg.0
  IL_0204:  ldstr      "DotnetDebugger.setNextIP"
  IL_0209:  call       "bool string.op_Equality(string, string)"
  IL_020e:  brtrue     IL_03da
  IL_0213:  br         IL_03f8
  IL_0218:  ldarg.0
  IL_0219:  ldstr      "Debugger.getPossibleBreakpoints"
  IL_021e:  call       "bool string.op_Equality(string, string)"
  IL_0223:  brtrue     IL_0380
  IL_0228:  br         IL_03f8
  IL_022d:  ldarg.0
  IL_022e:  ldstr      "Debugger.setBreakpoint"
  IL_0233:  call       "bool string.op_Equality(string, string)"
  IL_0238:  brtrue     IL_0386
  IL_023d:  br         IL_03f8
  IL_0242:  ldarg.0
  IL_0243:  ldstr      "Runtime.callFunctionOn"
  IL_0248:  call       "bool string.op_Equality(string, string)"
  IL_024d:  brtrue     IL_03f2
  IL_0252:  br         IL_03f8
  IL_0257:  ldarg.0
  IL_0258:  ldstr      "Debugger.setBreakpointByUrl"
  IL_025d:  call       "bool string.op_Equality(string, string)"
  IL_0262:  brtrue     IL_038c
  IL_0267:  br         IL_03f8
  IL_026c:  ldarg.0
  IL_026d:  ldstr      "DotnetDebugger.applyUpdates"
  IL_0272:  call       "bool string.op_Equality(string, string)"
  IL_0277:  brtrue     IL_03e0
  IL_027c:  br         IL_03f8
  IL_0281:  ldarg.0
  IL_0282:  ldstr      "Debugger.removeBreakpoint"
  IL_0287:  call       "bool string.op_Equality(string, string)"
  IL_028c:  brtrue     IL_0392
  IL_0291:  br         IL_03f8
  IL_0296:  ldarg.0
  IL_0297:  ldstr      "Debugger.setVariableValue"
  IL_029c:  call       "bool string.op_Equality(string, string)"
  IL_02a1:  brtrue     IL_03a4
  IL_02a6:  br         IL_03f8
  IL_02ab:  ldarg.0
  IL_02ac:  ldstr      "Debugger.stepInto"
  IL_02b1:  call       "bool string.op_Equality(string, string)"
  IL_02b6:  brtrue     IL_039e
  IL_02bb:  br         IL_03f8
  IL_02c0:  ldarg.0
  IL_02c1:  ldstr      "Debugger.stepOver"
  IL_02c6:  call       "bool string.op_Equality(string, string)"
  IL_02cb:  brtrue     IL_03b0
  IL_02d0:  br         IL_03f8
  IL_02d5:  ldarg.0
  IL_02d6:  ldstr      "Debugger.stepOut"
  IL_02db:  call       "bool string.op_Equality(string, string)"
  IL_02e0:  brtrue     IL_03aa
  IL_02e5:  br         IL_03f8
  IL_02ea:  ldarg.0
  IL_02eb:  ldstr      "Runtime.evaluate"
  IL_02f0:  call       "bool string.op_Equality(string, string)"
  IL_02f5:  brtrue     IL_03b6
  IL_02fa:  br         IL_03f8
  IL_02ff:  ldarg.0
  IL_0300:  ldstr      "Debugger.evaluateOnCallFrame"
  IL_0305:  call       "bool string.op_Equality(string, string)"
  IL_030a:  brtrue     IL_03bc
  IL_030f:  br         IL_03f8
  IL_0314:  ldarg.0
  IL_0315:  ldstr      "Debugger.setPauseOnExceptions"
  IL_031a:  call       "bool string.op_Equality(string, string)"
  IL_031f:  brtrue     IL_03ce
  IL_0324:  br         IL_03f8
  IL_0329:  ldarg.0
  IL_032a:  ldstr      "DotnetDebugger.setDebuggerProperty"
  IL_032f:  call       "bool string.op_Equality(string, string)"
  IL_0334:  brtrue     IL_03d4
  IL_0339:  br         IL_03f8
  IL_033e:  ldarg.0
  IL_033f:  ldstr      "DotnetDebugger.addSymbolServerUrl"
  IL_0344:  call       "bool string.op_Equality(string, string)"
  IL_0349:  brtrue     IL_03e6
  IL_034e:  br         IL_03f8
  IL_0353:  ldarg.0
  IL_0354:  ldstr      "DotnetDebugger.getMethodLocation"
  IL_0359:  call       "bool string.op_Equality(string, string)"
  IL_035e:  brtrue     IL_03ec
  IL_0363:  br         IL_03f8
  IL_0368:  ldstr      "1"
  IL_036d:  ret
  IL_036e:  ldstr      "2"
  IL_0373:  ret
  IL_0374:  ldstr      "3"
  IL_0379:  ret
  IL_037a:  ldstr      "4"
  IL_037f:  ret
  IL_0380:  ldstr      "5"
  IL_0385:  ret
  IL_0386:  ldstr      "6"
  IL_038b:  ret
  IL_038c:  ldstr      "7"
  IL_0391:  ret
  IL_0392:  ldstr      "8"
  IL_0397:  ret
  IL_0398:  ldstr      "9"
  IL_039d:  ret
  IL_039e:  ldstr      "10"
  IL_03a3:  ret
  IL_03a4:  ldstr      "11"
  IL_03a9:  ret
  IL_03aa:  ldstr      "12"
  IL_03af:  ret
  IL_03b0:  ldstr      "13"
  IL_03b5:  ret
  IL_03b6:  ldstr      "14"
  IL_03bb:  ret
  IL_03bc:  ldstr      "15"
  IL_03c1:  ret
  IL_03c2:  ldstr      "16"
  IL_03c7:  ret
  IL_03c8:  ldstr      "17"
  IL_03cd:  ret
  IL_03ce:  ldstr      "18"
  IL_03d3:  ret
  IL_03d4:  ldstr      "19"
  IL_03d9:  ret
  IL_03da:  ldstr      "20"
  IL_03df:  ret
  IL_03e0:  ldstr      "21"
  IL_03e5:  ret
  IL_03e6:  ldstr      "22"
  IL_03eb:  ret
  IL_03ec:  ldstr      "23"
  IL_03f1:  ret
  IL_03f2:  ldstr      "24"
  IL_03f7:  ret
  IL_03f8:  ldstr      "default"
  IL_03fd:  ret
}
""");
 
        comp = CreateCompilation(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size     1018 (0x3fa)
  .maxstack  2
  .locals init (uint V_0)
  IL_0000:  ldarg.0
  IL_0001:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0006:  stloc.0
  IL_0007:  ldloc.0
  IL_0008:  ldc.i4     0xb508d68f
  IL_000d:  bgt.un     IL_00c2
  IL_0012:  ldloc.0
  IL_0013:  ldc.i4     0x4b092f03
  IL_0018:  bgt.un.s   IL_006e
  IL_001a:  ldloc.0
  IL_001b:  ldc.i4     0x1e768f83
  IL_0020:  bgt.un.s   IL_0048
  IL_0022:  ldloc.0
  IL_0023:  ldc.i4     0x15a7290
  IL_0028:  beq        IL_033a
  IL_002d:  ldloc.0
  IL_002e:  ldc.i4     0x35576d8
  IL_0033:  beq        IL_02e6
  IL_0038:  ldloc.0
  IL_0039:  ldc.i4     0x1e768f83
  IL_003e:  beq        IL_0214
  IL_0043:  br         IL_03f4
  IL_0048:  ldloc.0
  IL_0049:  ldc.i4     0x36ca30ef
  IL_004e:  beq        IL_0181
  IL_0053:  ldloc.0
  IL_0054:  ldc.i4     0x48313e0c
  IL_0059:  beq        IL_0229
  IL_005e:  ldloc.0
  IL_005f:  ldc.i4     0x4b092f03
  IL_0064:  beq        IL_0292
  IL_0069:  br         IL_03f4
  IL_006e:  ldloc.0
  IL_006f:  ldc.i4     0x7de76a02
  IL_0074:  bgt.un.s   IL_009c
  IL_0076:  ldloc.0
  IL_0077:  ldc.i4     0x4be2fe50
  IL_007c:  beq        IL_027d
  IL_0081:  ldloc.0
  IL_0082:  ldc.i4     0x6f7079ab
  IL_0087:  beq        IL_01ea
  IL_008c:  ldloc.0
  IL_008d:  ldc.i4     0x7de76a02
  IL_0092:  beq        IL_02fb
  IL_0097:  br         IL_03f4
  IL_009c:  ldloc.0
  IL_009d:  ldc.i4     0x925e89c3
  IL_00a2:  beq        IL_02bc
  IL_00a7:  ldloc.0
  IL_00a8:  ldc.i4     0xa0ca5e2a
  IL_00ad:  beq        IL_034f
  IL_00b2:  ldloc.0
  IL_00b3:  ldc.i4     0xb508d68f
  IL_00b8:  beq        IL_0325
  IL_00bd:  br         IL_03f4
  IL_00c2:  ldloc.0
  IL_00c3:  ldc.i4     0xd3193fe0
  IL_00c8:  bgt.un.s   IL_011b
  IL_00ca:  ldloc.0
  IL_00cb:  ldc.i4     0xc16fb451
  IL_00d0:  bgt.un.s   IL_00f8
  IL_00d2:  ldloc.0
  IL_00d3:  ldc.i4     0xbc145742
  IL_00d8:  beq        IL_0196
  IL_00dd:  ldloc.0
  IL_00de:  ldc.i4     0xbe721584
  IL_00e3:  beq        IL_0310
  IL_00e8:  ldloc.0
  IL_00e9:  ldc.i4     0xc16fb451
  IL_00ee:  beq        IL_01c0
  IL_00f3:  br         IL_03f4
  IL_00f8:  ldloc.0
  IL_00f9:  ldc.i4     0xc49a4297
  IL_00fe:  beq.s      IL_016c
  IL_0100:  ldloc.0
  IL_0101:  ldc.i4     0xd07d7ccf
  IL_0106:  beq        IL_01ab
  IL_010b:  ldloc.0
  IL_010c:  ldc.i4     0xd3193fe0
  IL_0111:  beq        IL_0268
  IL_0116:  br         IL_03f4
  IL_011b:  ldloc.0
  IL_011c:  ldc.i4     0xdee508e0
  IL_0121:  bgt.un.s   IL_0149
  IL_0123:  ldloc.0
  IL_0124:  ldc.i4     0xd8f74285
  IL_0129:  beq        IL_02d1
  IL_012e:  ldloc.0
  IL_012f:  ldc.i4     0xde4a6def
  IL_0134:  beq        IL_01ff
  IL_0139:  ldloc.0
  IL_013a:  ldc.i4     0xdee508e0
  IL_013f:  beq        IL_02a7
  IL_0144:  br         IL_03f4
  IL_0149:  ldloc.0
  IL_014a:  ldc.i4     0xe0c38306
  IL_014f:  beq        IL_0253
  IL_0154:  ldloc.0
  IL_0155:  ldc.i4     0xfbe9f177
  IL_015a:  beq.s      IL_01d5
  IL_015c:  ldloc.0
  IL_015d:  ldc.i4     0xfc282ff1
  IL_0162:  beq        IL_023e
  IL_0167:  br         IL_03f4
  IL_016c:  ldarg.0
  IL_016d:  ldstr      "Target.attachToTarget"
  IL_0172:  call       "bool string.op_Equality(string, string)"
  IL_0177:  brtrue     IL_0364
  IL_017c:  br         IL_03f4
  IL_0181:  ldarg.0
  IL_0182:  ldstr      "Debugger.enable"
  IL_0187:  call       "bool string.op_Equality(string, string)"
  IL_018c:  brtrue     IL_036a
  IL_0191:  br         IL_03f4
  IL_0196:  ldarg.0
  IL_0197:  ldstr      "Debugger.getScriptSource"
  IL_019c:  call       "bool string.op_Equality(string, string)"
  IL_01a1:  brtrue     IL_0370
  IL_01a6:  br         IL_03f4
  IL_01ab:  ldarg.0
  IL_01ac:  ldstr      "Runtime.compileScript"
  IL_01b1:  call       "bool string.op_Equality(string, string)"
  IL_01b6:  brtrue     IL_0376
  IL_01bb:  br         IL_03f4
  IL_01c0:  ldarg.0
  IL_01c1:  ldstr      "Debugger.getPossibleBreakpoints"
  IL_01c6:  call       "bool string.op_Equality(string, string)"
  IL_01cb:  brtrue     IL_037c
  IL_01d0:  br         IL_03f4
  IL_01d5:  ldarg.0
  IL_01d6:  ldstr      "Debugger.setBreakpoint"
  IL_01db:  call       "bool string.op_Equality(string, string)"
  IL_01e0:  brtrue     IL_0382
  IL_01e5:  br         IL_03f4
  IL_01ea:  ldarg.0
  IL_01eb:  ldstr      "Debugger.setBreakpointByUrl"
  IL_01f0:  call       "bool string.op_Equality(string, string)"
  IL_01f5:  brtrue     IL_0388
  IL_01fa:  br         IL_03f4
  IL_01ff:  ldarg.0
  IL_0200:  ldstr      "Debugger.removeBreakpoint"
  IL_0205:  call       "bool string.op_Equality(string, string)"
  IL_020a:  brtrue     IL_038e
  IL_020f:  br         IL_03f4
  IL_0214:  ldarg.0
  IL_0215:  ldstr      "Debugger.resume"
  IL_021a:  call       "bool string.op_Equality(string, string)"
  IL_021f:  brtrue     IL_0394
  IL_0224:  br         IL_03f4
  IL_0229:  ldarg.0
  IL_022a:  ldstr      "Debugger.stepInto"
  IL_022f:  call       "bool string.op_Equality(string, string)"
  IL_0234:  brtrue     IL_039a
  IL_0239:  br         IL_03f4
  IL_023e:  ldarg.0
  IL_023f:  ldstr      "Debugger.setVariableValue"
  IL_0244:  call       "bool string.op_Equality(string, string)"
  IL_0249:  brtrue     IL_03a0
  IL_024e:  br         IL_03f4
  IL_0253:  ldarg.0
  IL_0254:  ldstr      "Debugger.stepOut"
  IL_0259:  call       "bool string.op_Equality(string, string)"
  IL_025e:  brtrue     IL_03a6
  IL_0263:  br         IL_03f4
  IL_0268:  ldarg.0
  IL_0269:  ldstr      "Debugger.stepOver"
  IL_026e:  call       "bool string.op_Equality(string, string)"
  IL_0273:  brtrue     IL_03ac
  IL_0278:  br         IL_03f4
  IL_027d:  ldarg.0
  IL_027e:  ldstr      "Runtime.evaluate"
  IL_0283:  call       "bool string.op_Equality(string, string)"
  IL_0288:  brtrue     IL_03b2
  IL_028d:  br         IL_03f4
  IL_0292:  ldarg.0
  IL_0293:  ldstr      "Debugger.evaluateOnCallFrame"
  IL_0298:  call       "bool string.op_Equality(string, string)"
  IL_029d:  brtrue     IL_03b8
  IL_02a2:  br         IL_03f4
  IL_02a7:  ldarg.0
  IL_02a8:  ldstr      "Runtime.getProperties"
  IL_02ad:  call       "bool string.op_Equality(string, string)"
  IL_02b2:  brtrue     IL_03be
  IL_02b7:  br         IL_03f4
  IL_02bc:  ldarg.0
  IL_02bd:  ldstr      "Runtime.releaseObject"
  IL_02c2:  call       "bool string.op_Equality(string, string)"
  IL_02c7:  brtrue     IL_03c4
  IL_02cc:  br         IL_03f4
  IL_02d1:  ldarg.0
  IL_02d2:  ldstr      "Debugger.setPauseOnExceptions"
  IL_02d7:  call       "bool string.op_Equality(string, string)"
  IL_02dc:  brtrue     IL_03ca
  IL_02e1:  br         IL_03f4
  IL_02e6:  ldarg.0
  IL_02e7:  ldstr      "DotnetDebugger.setDebuggerProperty"
  IL_02ec:  call       "bool string.op_Equality(string, string)"
  IL_02f1:  brtrue     IL_03d0
  IL_02f6:  br         IL_03f4
  IL_02fb:  ldarg.0
  IL_02fc:  ldstr      "DotnetDebugger.setNextIP"
  IL_0301:  call       "bool string.op_Equality(string, string)"
  IL_0306:  brtrue     IL_03d6
  IL_030b:  br         IL_03f4
  IL_0310:  ldarg.0
  IL_0311:  ldstr      "DotnetDebugger.applyUpdates"
  IL_0316:  call       "bool string.op_Equality(string, string)"
  IL_031b:  brtrue     IL_03dc
  IL_0320:  br         IL_03f4
  IL_0325:  ldarg.0
  IL_0326:  ldstr      "DotnetDebugger.addSymbolServerUrl"
  IL_032b:  call       "bool string.op_Equality(string, string)"
  IL_0330:  brtrue     IL_03e2
  IL_0335:  br         IL_03f4
  IL_033a:  ldarg.0
  IL_033b:  ldstr      "DotnetDebugger.getMethodLocation"
  IL_0340:  call       "bool string.op_Equality(string, string)"
  IL_0345:  brtrue     IL_03e8
  IL_034a:  br         IL_03f4
  IL_034f:  ldarg.0
  IL_0350:  ldstr      "Runtime.callFunctionOn"
  IL_0355:  call       "bool string.op_Equality(string, string)"
  IL_035a:  brtrue     IL_03ee
  IL_035f:  br         IL_03f4
  IL_0364:  ldstr      "1"
  IL_0369:  ret
  IL_036a:  ldstr      "2"
  IL_036f:  ret
  IL_0370:  ldstr      "3"
  IL_0375:  ret
  IL_0376:  ldstr      "4"
  IL_037b:  ret
  IL_037c:  ldstr      "5"
  IL_0381:  ret
  IL_0382:  ldstr      "6"
  IL_0387:  ret
  IL_0388:  ldstr      "7"
  IL_038d:  ret
  IL_038e:  ldstr      "8"
  IL_0393:  ret
  IL_0394:  ldstr      "9"
  IL_0399:  ret
  IL_039a:  ldstr      "10"
  IL_039f:  ret
  IL_03a0:  ldstr      "11"
  IL_03a5:  ret
  IL_03a6:  ldstr      "12"
  IL_03ab:  ret
  IL_03ac:  ldstr      "13"
  IL_03b1:  ret
  IL_03b2:  ldstr      "14"
  IL_03b7:  ret
  IL_03b8:  ldstr      "15"
  IL_03bd:  ret
  IL_03be:  ldstr      "16"
  IL_03c3:  ret
  IL_03c4:  ldstr      "17"
  IL_03c9:  ret
  IL_03ca:  ldstr      "18"
  IL_03cf:  ret
  IL_03d0:  ldstr      "19"
  IL_03d5:  ret
  IL_03d6:  ldstr      "20"
  IL_03db:  ret
  IL_03dc:  ldstr      "21"
  IL_03e1:  ret
  IL_03e2:  ldstr      "22"
  IL_03e7:  ret
  IL_03e8:  ldstr      "23"
  IL_03ed:  ret
  IL_03ee:  ldstr      "24"
  IL_03f3:  ret
  IL_03f4:  ldstr      "default"
  IL_03f9:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void IsOperator()
    {
        // Based on https://github.com/dotnet/runtime/blob/a30de6d40f69ef612b514344a5ec83fffd10b957/src/tools/illink/src/linker/Linker.Steps/DiscoverCustomOperatorsHandler.cs#L156-L221
        // Buckets: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
        var source = """
assert(null, "default");
assert("", "default");
assert("GreaterThanOrEqual", "2");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string value)
    {
        switch (value)
        {
            case "UnaryPlus":
            case "UnaryNegation":
            case "LogicalNot":
            case "OnesComplement":
            case "Increment":
            case "Decrement":
            case "True":
            case "False":
                return "1";
            case "Addition":
            case "Subtraction":
            case "Multiply":
            case "Division":
            case "Modulus":
            case "BitwiseAnd":
            case "BitwiseOr":
            case "ExclusiveOr":
            case "LeftShift":
            case "RightShift":
            case "Equality":
            case "Inequality":
            case "LessThan":
            case "GreaterThan":
            case "LessThanOrEqual":
            case "GreaterThanOrEqual":
                return "2";
            case "Implicit":
            case "Explicit":
                return "3";
            default:
                return "default";
        }
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      852 (0x354)
  .maxstack  2
  .locals init (int V_0,
                char V_1)
  IL_0000:  ldarg.0
  IL_0001:  brfalse    IL_034e
  IL_0006:  ldarg.0
  IL_0007:  call       "int string.Length.get"
  IL_000c:  stloc.0
  IL_000d:  ldloc.0
  IL_000e:  ldc.i4.4
  IL_000f:  sub
  IL_0010:  switch    (
        IL_0231,
        IL_0246,
        IL_034e,
        IL_030f,
        IL_00cc,
        IL_0056,
        IL_0095,
        IL_0125,
        IL_034e,
        IL_01b3,
        IL_021c,
        IL_031e,
        IL_034e,
        IL_034e,
        IL_032d)
  IL_0051:  br         IL_034e
  IL_0056:  ldarg.0
  IL_0057:  ldc.i4.0
  IL_0058:  call       "char string.this[int].get"
  IL_005d:  stloc.1
  IL_005e:  ldloc.1
  IL_005f:  ldc.i4.s   68
  IL_0061:  bgt.un.s   IL_0078
  IL_0063:  ldloc.1
  IL_0064:  ldc.i4.s   66
  IL_0066:  beq        IL_0189
  IL_006b:  ldloc.1
  IL_006c:  ldc.i4.s   68
  IL_006e:  beq        IL_0174
  IL_0073:  br         IL_034e
  IL_0078:  ldloc.1
  IL_0079:  ldc.i4.s   73
  IL_007b:  beq        IL_015f
  IL_0080:  ldloc.1
  IL_0081:  ldc.i4.s   76
  IL_0083:  beq        IL_019e
  IL_0088:  ldloc.1
  IL_0089:  ldc.i4.s   85
  IL_008b:  beq        IL_014a
  IL_0090:  br         IL_034e
  IL_0095:  ldarg.0
  IL_0096:  ldc.i4.0
  IL_0097:  call       "char string.this[int].get"
  IL_009c:  stloc.1
  IL_009d:  ldloc.1
  IL_009e:  ldc.i4.s   73
  IL_00a0:  bgt.un.s   IL_00b7
  IL_00a2:  ldloc.1
  IL_00a3:  ldc.i4.s   66
  IL_00a5:  beq        IL_01dd
  IL_00aa:  ldloc.1
  IL_00ab:  ldc.i4.s   73
  IL_00ad:  beq        IL_0207
  IL_00b2:  br         IL_034e
  IL_00b7:  ldloc.1
  IL_00b8:  ldc.i4.s   76
  IL_00ba:  beq        IL_01c8
  IL_00bf:  ldloc.1
  IL_00c0:  ldc.i4.s   82
  IL_00c2:  beq        IL_01f2
  IL_00c7:  br         IL_034e
  IL_00cc:  ldarg.0
  IL_00cd:  ldc.i4.1
  IL_00ce:  call       "char string.this[int].get"
  IL_00d3:  stloc.1
  IL_00d4:  ldloc.1
  IL_00d5:  ldc.i4.s   105
  IL_00d7:  bgt.un.s   IL_00f6
  IL_00d9:  ldloc.1
  IL_00da:  ldc.i4.s   100
  IL_00dc:  beq        IL_025b
  IL_00e1:  ldloc.1
  IL_00e2:  ldc.i4.s   101
  IL_00e4:  beq        IL_02af
  IL_00e9:  ldloc.1
  IL_00ea:  ldc.i4.s   105
  IL_00ec:  beq        IL_0285
  IL_00f1:  br         IL_034e
  IL_00f6:  ldloc.1
  IL_00f7:  ldc.i4.s   113
  IL_00f9:  bgt.un.s   IL_0110
  IL_00fb:  ldloc.1
  IL_00fc:  ldc.i4.s   109
  IL_00fe:  beq        IL_02c4
  IL_0103:  ldloc.1
  IL_0104:  ldc.i4.s   113
  IL_0106:  beq        IL_029a
  IL_010b:  br         IL_034e
  IL_0110:  ldloc.1
  IL_0111:  ldc.i4.s   117
  IL_0113:  beq        IL_0270
  IL_0118:  ldloc.1
  IL_0119:  ldc.i4.s   120
  IL_011b:  beq        IL_02d3
  IL_0120:  br         IL_034e
  IL_0125:  ldarg.0
  IL_0126:  ldc.i4.0
  IL_0127:  call       "char string.this[int].get"
  IL_012c:  stloc.1
  IL_012d:  ldloc.1
  IL_012e:  ldc.i4.s   69
  IL_0130:  beq        IL_02f1
  IL_0135:  ldloc.1
  IL_0136:  ldc.i4.s   71
  IL_0138:  beq        IL_0300
  IL_013d:  ldloc.1
  IL_013e:  ldc.i4.s   83
  IL_0140:  beq        IL_02e2
  IL_0145:  br         IL_034e
  IL_014a:  ldarg.0
  IL_014b:  ldstr      "UnaryPlus"
  IL_0150:  call       "bool string.op_Equality(string, string)"
  IL_0155:  brtrue     IL_033c
  IL_015a:  br         IL_034e
  IL_015f:  ldarg.0
  IL_0160:  ldstr      "Increment"
  IL_0165:  call       "bool string.op_Equality(string, string)"
  IL_016a:  brtrue     IL_033c
  IL_016f:  br         IL_034e
  IL_0174:  ldarg.0
  IL_0175:  ldstr      "Decrement"
  IL_017a:  call       "bool string.op_Equality(string, string)"
  IL_017f:  brtrue     IL_033c
  IL_0184:  br         IL_034e
  IL_0189:  ldarg.0
  IL_018a:  ldstr      "BitwiseOr"
  IL_018f:  call       "bool string.op_Equality(string, string)"
  IL_0194:  brtrue     IL_0342
  IL_0199:  br         IL_034e
  IL_019e:  ldarg.0
  IL_019f:  ldstr      "LeftShift"
  IL_01a4:  call       "bool string.op_Equality(string, string)"
  IL_01a9:  brtrue     IL_0342
  IL_01ae:  br         IL_034e
  IL_01b3:  ldarg.0
  IL_01b4:  ldstr      "UnaryNegation"
  IL_01b9:  call       "bool string.op_Equality(string, string)"
  IL_01be:  brtrue     IL_033c
  IL_01c3:  br         IL_034e
  IL_01c8:  ldarg.0
  IL_01c9:  ldstr      "LogicalNot"
  IL_01ce:  call       "bool string.op_Equality(string, string)"
  IL_01d3:  brtrue     IL_033c
  IL_01d8:  br         IL_034e
  IL_01dd:  ldarg.0
  IL_01de:  ldstr      "BitwiseAnd"
  IL_01e3:  call       "bool string.op_Equality(string, string)"
  IL_01e8:  brtrue     IL_0342
  IL_01ed:  br         IL_034e
  IL_01f2:  ldarg.0
  IL_01f3:  ldstr      "RightShift"
  IL_01f8:  call       "bool string.op_Equality(string, string)"
  IL_01fd:  brtrue     IL_0342
  IL_0202:  br         IL_034e
  IL_0207:  ldarg.0
  IL_0208:  ldstr      "Inequality"
  IL_020d:  call       "bool string.op_Equality(string, string)"
  IL_0212:  brtrue     IL_0342
  IL_0217:  br         IL_034e
  IL_021c:  ldarg.0
  IL_021d:  ldstr      "OnesComplement"
  IL_0222:  call       "bool string.op_Equality(string, string)"
  IL_0227:  brtrue     IL_033c
  IL_022c:  br         IL_034e
  IL_0231:  ldarg.0
  IL_0232:  ldstr      "True"
  IL_0237:  call       "bool string.op_Equality(string, string)"
  IL_023c:  brtrue     IL_033c
  IL_0241:  br         IL_034e
  IL_0246:  ldarg.0
  IL_0247:  ldstr      "False"
  IL_024c:  call       "bool string.op_Equality(string, string)"
  IL_0251:  brtrue     IL_033c
  IL_0256:  br         IL_034e
  IL_025b:  ldarg.0
  IL_025c:  ldstr      "Addition"
  IL_0261:  call       "bool string.op_Equality(string, string)"
  IL_0266:  brtrue     IL_0342
  IL_026b:  br         IL_034e
  IL_0270:  ldarg.0
  IL_0271:  ldstr      "Multiply"
  IL_0276:  call       "bool string.op_Equality(string, string)"
  IL_027b:  brtrue     IL_0342
  IL_0280:  br         IL_034e
  IL_0285:  ldarg.0
  IL_0286:  ldstr      "Division"
  IL_028b:  call       "bool string.op_Equality(string, string)"
  IL_0290:  brtrue     IL_0342
  IL_0295:  br         IL_034e
  IL_029a:  ldarg.0
  IL_029b:  ldstr      "Equality"
  IL_02a0:  call       "bool string.op_Equality(string, string)"
  IL_02a5:  brtrue     IL_0342
  IL_02aa:  br         IL_034e
  IL_02af:  ldarg.0
  IL_02b0:  ldstr      "LessThan"
  IL_02b5:  call       "bool string.op_Equality(string, string)"
  IL_02ba:  brtrue     IL_0342
  IL_02bf:  br         IL_034e
  IL_02c4:  ldarg.0
  IL_02c5:  ldstr      "Implicit"
  IL_02ca:  call       "bool string.op_Equality(string, string)"
  IL_02cf:  brtrue.s   IL_0348
  IL_02d1:  br.s       IL_034e
  IL_02d3:  ldarg.0
  IL_02d4:  ldstr      "Explicit"
  IL_02d9:  call       "bool string.op_Equality(string, string)"
  IL_02de:  brtrue.s   IL_0348
  IL_02e0:  br.s       IL_034e
  IL_02e2:  ldarg.0
  IL_02e3:  ldstr      "Subtraction"
  IL_02e8:  call       "bool string.op_Equality(string, string)"
  IL_02ed:  brtrue.s   IL_0342
  IL_02ef:  br.s       IL_034e
  IL_02f1:  ldarg.0
  IL_02f2:  ldstr      "ExclusiveOr"
  IL_02f7:  call       "bool string.op_Equality(string, string)"
  IL_02fc:  brtrue.s   IL_0342
  IL_02fe:  br.s       IL_034e
  IL_0300:  ldarg.0
  IL_0301:  ldstr      "GreaterThan"
  IL_0306:  call       "bool string.op_Equality(string, string)"
  IL_030b:  brtrue.s   IL_0342
  IL_030d:  br.s       IL_034e
  IL_030f:  ldarg.0
  IL_0310:  ldstr      "Modulus"
  IL_0315:  call       "bool string.op_Equality(string, string)"
  IL_031a:  brtrue.s   IL_0342
  IL_031c:  br.s       IL_034e
  IL_031e:  ldarg.0
  IL_031f:  ldstr      "LessThanOrEqual"
  IL_0324:  call       "bool string.op_Equality(string, string)"
  IL_0329:  brtrue.s   IL_0342
  IL_032b:  br.s       IL_034e
  IL_032d:  ldarg.0
  IL_032e:  ldstr      "GreaterThanOrEqual"
  IL_0333:  call       "bool string.op_Equality(string, string)"
  IL_0338:  brtrue.s   IL_0342
  IL_033a:  br.s       IL_034e
  IL_033c:  ldstr      "1"
  IL_0341:  ret
  IL_0342:  ldstr      "2"
  IL_0347:  ret
  IL_0348:  ldstr      "3"
  IL_034d:  ret
  IL_034e:  ldstr      "default"
  IL_0353:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void EmitIL()
    {
        // Based on https://github.com/dotnet/runtime/blob/a30de6d40f69ef612b514344a5ec83fffd10b957/src/coreclr/tools/Common/TypeSystem/IL/Stubs/UnsafeIntrinsics.cs#L21-L94
        // Buckets: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
        var source = """
assert("AsPointer");
assert("As");
assert("AsRef");
assert("Add");
assert("AddByteOffset");
assert("Copy");
assert("CopyBlock");
assert("CopyBlockUnaligned");
assert("InitBlock");
assert("InitBlockUnaligned");
assert("Read");
assert("Write");
assert("ReadUnaligned");
assert("WriteUnaligned");
assert("AreSame");
assert("ByteOffset");
assert("NullRef");
assert("IsNullRef");
assert("SkipInit");
assert("Subtract");
assert("SubtractByteOffset");
assert("Unbox");
 
assert(null, "default");
assert("", "default");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string value)
    {
        return value switch
        {
            "AsPointer" => "AsPointer",
            "As" => "As",
            "AsRef" => "AsRef",
            "Add" => "Add",
            "AddByteOffset" => "AddByteOffset",
            "Copy" => "Copy",
            "CopyBlock" => "CopyBlock",
            "CopyBlockUnaligned" => "CopyBlockUnaligned",
            "InitBlock" => "InitBlock",
            "InitBlockUnaligned" => "InitBlockUnaligned",
            "Read" => "Read",
            "Write" => "Write",
            "ReadUnaligned" => "ReadUnaligned",
            "WriteUnaligned" => "WriteUnaligned",
            "AreSame" => "AreSame",
            "ByteOffset" => "ByteOffset",
            "NullRef" => "NullRef",
            "IsNullRef" => "IsNullRef",
            "SkipInit" => "SkipInit",
            "Subtract" => "Subtract",
            "SubtractByteOffset" => "SubtractByteOffset",
            "Unbox" => "Unbox",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size     1003 (0x3eb)
  .maxstack  2
  .locals init (string V_0,
                int V_1,
                char V_2)
  IL_0000:  ldarg.0
  IL_0001:  brfalse    IL_03e3
  IL_0006:  ldarg.0
  IL_0007:  call       "int string.Length.get"
  IL_000c:  stloc.1
  IL_000d:  ldloc.1
  IL_000e:  ldc.i4.2
  IL_000f:  sub
  IL_0010:  switch    (
        IL_01a7,
        IL_01fb,
        IL_00d7,
        IL_0095,
        IL_03e3,
        IL_0119,
        IL_0136,
        IL_005e,
        IL_02e2,
        IL_03e3,
        IL_03e3,
        IL_00ba,
        IL_02a3,
        IL_03e3,
        IL_03e3,
        IL_03e3,
        IL_00f4)
  IL_0059:  br         IL_03e3
  IL_005e:  ldarg.0
  IL_005f:  ldc.i4.2
  IL_0060:  call       "char string.this[int].get"
  IL_0065:  stloc.2
  IL_0066:  ldloc.2
  IL_0067:  ldc.i4.s   80
  IL_0069:  bgt.un.s   IL_0080
  IL_006b:  ldloc.2
  IL_006c:  ldc.i4.s   78
  IL_006e:  beq        IL_0192
  IL_0073:  ldloc.2
  IL_0074:  ldc.i4.s   80
  IL_0076:  beq        IL_0153
  IL_007b:  br         IL_03e3
  IL_0080:  ldloc.2
  IL_0081:  ldc.i4.s   105
  IL_0083:  beq        IL_017d
  IL_0088:  ldloc.2
  IL_0089:  ldc.i4.s   112
  IL_008b:  beq        IL_0168
  IL_0090:  br         IL_03e3
  IL_0095:  ldarg.0
  IL_0096:  ldc.i4.0
  IL_0097:  call       "char string.this[int].get"
  IL_009c:  stloc.2
  IL_009d:  ldloc.2
  IL_009e:  ldc.i4.s   65
  IL_00a0:  beq        IL_01bc
  IL_00a5:  ldloc.2
  IL_00a6:  ldc.i4.s   85
  IL_00a8:  beq        IL_01e6
  IL_00ad:  ldloc.2
  IL_00ae:  ldc.i4.s   87
  IL_00b0:  beq        IL_01d1
  IL_00b5:  br         IL_03e3
  IL_00ba:  ldarg.0
  IL_00bb:  ldc.i4.0
  IL_00bc:  call       "char string.this[int].get"
  IL_00c1:  stloc.2
  IL_00c2:  ldloc.2
  IL_00c3:  ldc.i4.s   65
  IL_00c5:  beq        IL_0210
  IL_00ca:  ldloc.2
  IL_00cb:  ldc.i4.s   82
  IL_00cd:  beq        IL_0225
  IL_00d2:  br         IL_03e3
  IL_00d7:  ldarg.0
  IL_00d8:  ldc.i4.0
  IL_00d9:  call       "char string.this[int].get"
  IL_00de:  stloc.2
  IL_00df:  ldloc.2
  IL_00e0:  ldc.i4.s   67
  IL_00e2:  beq        IL_023a
  IL_00e7:  ldloc.2
  IL_00e8:  ldc.i4.s   82
  IL_00ea:  beq        IL_024f
  IL_00ef:  br         IL_03e3
  IL_00f4:  ldarg.0
  IL_00f5:  ldc.i4.0
  IL_00f6:  call       "char string.this[int].get"
  IL_00fb:  stloc.2
  IL_00fc:  ldloc.2
  IL_00fd:  ldc.i4.s   67
  IL_00ff:  beq        IL_0264
  IL_0104:  ldloc.2
  IL_0105:  ldc.i4.s   73
  IL_0107:  beq        IL_0279
  IL_010c:  ldloc.2
  IL_010d:  ldc.i4.s   83
  IL_010f:  beq        IL_028e
  IL_0114:  br         IL_03e3
  IL_0119:  ldarg.0
  IL_011a:  ldc.i4.0
  IL_011b:  call       "char string.this[int].get"
  IL_0120:  stloc.2
  IL_0121:  ldloc.2
  IL_0122:  ldc.i4.s   65
  IL_0124:  beq        IL_02b8
  IL_0129:  ldloc.2
  IL_012a:  ldc.i4.s   78
  IL_012c:  beq        IL_02cd
  IL_0131:  br         IL_03e3
  IL_0136:  ldarg.0
  IL_0137:  ldc.i4.1
  IL_0138:  call       "char string.this[int].get"
  IL_013d:  stloc.2
  IL_013e:  ldloc.2
  IL_013f:  ldc.i4.s   107
  IL_0141:  beq        IL_02f7
  IL_0146:  ldloc.2
  IL_0147:  ldc.i4.s   117
  IL_0149:  beq        IL_030c
  IL_014e:  br         IL_03e3
  IL_0153:  ldarg.0
  IL_0154:  ldstr      "AsPointer"
  IL_0159:  call       "bool string.op_Equality(string, string)"
  IL_015e:  brtrue     IL_0321
  IL_0163:  br         IL_03e3
  IL_0168:  ldarg.0
  IL_0169:  ldstr      "CopyBlock"
  IL_016e:  call       "bool string.op_Equality(string, string)"
  IL_0173:  brtrue     IL_0363
  IL_0178:  br         IL_03e3
  IL_017d:  ldarg.0
  IL_017e:  ldstr      "InitBlock"
  IL_0183:  call       "bool string.op_Equality(string, string)"
  IL_0188:  brtrue     IL_0373
  IL_018d:  br         IL_03e3
  IL_0192:  ldarg.0
  IL_0193:  ldstr      "IsNullRef"
  IL_0198:  call       "bool string.op_Equality(string, string)"
  IL_019d:  brtrue     IL_03bb
  IL_01a2:  br         IL_03e3
  IL_01a7:  ldarg.0
  IL_01a8:  ldstr      "As"
  IL_01ad:  call       "bool string.op_Equality(string, string)"
  IL_01b2:  brtrue     IL_032c
  IL_01b7:  br         IL_03e3
  IL_01bc:  ldarg.0
  IL_01bd:  ldstr      "AsRef"
  IL_01c2:  call       "bool string.op_Equality(string, string)"
  IL_01c7:  brtrue     IL_0337
  IL_01cc:  br         IL_03e3
  IL_01d1:  ldarg.0
  IL_01d2:  ldstr      "Write"
  IL_01d7:  call       "bool string.op_Equality(string, string)"
  IL_01dc:  brtrue     IL_038b
  IL_01e1:  br         IL_03e3
  IL_01e6:  ldarg.0
  IL_01e7:  ldstr      "Unbox"
  IL_01ec:  call       "bool string.op_Equality(string, string)"
  IL_01f1:  brtrue     IL_03db
  IL_01f6:  br         IL_03e3
  IL_01fb:  ldarg.0
  IL_01fc:  ldstr      "Add"
  IL_0201:  call       "bool string.op_Equality(string, string)"
  IL_0206:  brtrue     IL_0342
  IL_020b:  br         IL_03e3
  IL_0210:  ldarg.0
  IL_0211:  ldstr      "AddByteOffset"
  IL_0216:  call       "bool string.op_Equality(string, string)"
  IL_021b:  brtrue     IL_034d
  IL_0220:  br         IL_03e3
  IL_0225:  ldarg.0
  IL_0226:  ldstr      "ReadUnaligned"
  IL_022b:  call       "bool string.op_Equality(string, string)"
  IL_0230:  brtrue     IL_0393
  IL_0235:  br         IL_03e3
  IL_023a:  ldarg.0
  IL_023b:  ldstr      "Copy"
  IL_0240:  call       "bool string.op_Equality(string, string)"
  IL_0245:  brtrue     IL_0358
  IL_024a:  br         IL_03e3
  IL_024f:  ldarg.0
  IL_0250:  ldstr      "Read"
  IL_0255:  call       "bool string.op_Equality(string, string)"
  IL_025a:  brtrue     IL_0383
  IL_025f:  br         IL_03e3
  IL_0264:  ldarg.0
  IL_0265:  ldstr      "CopyBlockUnaligned"
  IL_026a:  call       "bool string.op_Equality(string, string)"
  IL_026f:  brtrue     IL_036b
  IL_0274:  br         IL_03e3
  IL_0279:  ldarg.0
  IL_027a:  ldstr      "InitBlockUnaligned"
  IL_027f:  call       "bool string.op_Equality(string, string)"
  IL_0284:  brtrue     IL_037b
  IL_0289:  br         IL_03e3
  IL_028e:  ldarg.0
  IL_028f:  ldstr      "SubtractByteOffset"
  IL_0294:  call       "bool string.op_Equality(string, string)"
  IL_0299:  brtrue     IL_03d3
  IL_029e:  br         IL_03e3
  IL_02a3:  ldarg.0
  IL_02a4:  ldstr      "WriteUnaligned"
  IL_02a9:  call       "bool string.op_Equality(string, string)"
  IL_02ae:  brtrue     IL_039b
  IL_02b3:  br         IL_03e3
  IL_02b8:  ldarg.0
  IL_02b9:  ldstr      "AreSame"
  IL_02be:  call       "bool string.op_Equality(string, string)"
  IL_02c3:  brtrue     IL_03a3
  IL_02c8:  br         IL_03e3
  IL_02cd:  ldarg.0
  IL_02ce:  ldstr      "NullRef"
  IL_02d3:  call       "bool string.op_Equality(string, string)"
  IL_02d8:  brtrue     IL_03b3
  IL_02dd:  br         IL_03e3
  IL_02e2:  ldarg.0
  IL_02e3:  ldstr      "ByteOffset"
  IL_02e8:  call       "bool string.op_Equality(string, string)"
  IL_02ed:  brtrue     IL_03ab
  IL_02f2:  br         IL_03e3
  IL_02f7:  ldarg.0
  IL_02f8:  ldstr      "SkipInit"
  IL_02fd:  call       "bool string.op_Equality(string, string)"
  IL_0302:  brtrue     IL_03c3
  IL_0307:  br         IL_03e3
  IL_030c:  ldarg.0
  IL_030d:  ldstr      "Subtract"
  IL_0312:  call       "bool string.op_Equality(string, string)"
  IL_0317:  brtrue     IL_03cb
  IL_031c:  br         IL_03e3
  IL_0321:  ldstr      "AsPointer"
  IL_0326:  stloc.0
  IL_0327:  br         IL_03e9
  IL_032c:  ldstr      "As"
  IL_0331:  stloc.0
  IL_0332:  br         IL_03e9
  IL_0337:  ldstr      "AsRef"
  IL_033c:  stloc.0
  IL_033d:  br         IL_03e9
  IL_0342:  ldstr      "Add"
  IL_0347:  stloc.0
  IL_0348:  br         IL_03e9
  IL_034d:  ldstr      "AddByteOffset"
  IL_0352:  stloc.0
  IL_0353:  br         IL_03e9
  IL_0358:  ldstr      "Copy"
  IL_035d:  stloc.0
  IL_035e:  br         IL_03e9
  IL_0363:  ldstr      "CopyBlock"
  IL_0368:  stloc.0
  IL_0369:  br.s       IL_03e9
  IL_036b:  ldstr      "CopyBlockUnaligned"
  IL_0370:  stloc.0
  IL_0371:  br.s       IL_03e9
  IL_0373:  ldstr      "InitBlock"
  IL_0378:  stloc.0
  IL_0379:  br.s       IL_03e9
  IL_037b:  ldstr      "InitBlockUnaligned"
  IL_0380:  stloc.0
  IL_0381:  br.s       IL_03e9
  IL_0383:  ldstr      "Read"
  IL_0388:  stloc.0
  IL_0389:  br.s       IL_03e9
  IL_038b:  ldstr      "Write"
  IL_0390:  stloc.0
  IL_0391:  br.s       IL_03e9
  IL_0393:  ldstr      "ReadUnaligned"
  IL_0398:  stloc.0
  IL_0399:  br.s       IL_03e9
  IL_039b:  ldstr      "WriteUnaligned"
  IL_03a0:  stloc.0
  IL_03a1:  br.s       IL_03e9
  IL_03a3:  ldstr      "AreSame"
  IL_03a8:  stloc.0
  IL_03a9:  br.s       IL_03e9
  IL_03ab:  ldstr      "ByteOffset"
  IL_03b0:  stloc.0
  IL_03b1:  br.s       IL_03e9
  IL_03b3:  ldstr      "NullRef"
  IL_03b8:  stloc.0
  IL_03b9:  br.s       IL_03e9
  IL_03bb:  ldstr      "IsNullRef"
  IL_03c0:  stloc.0
  IL_03c1:  br.s       IL_03e9
  IL_03c3:  ldstr      "SkipInit"
  IL_03c8:  stloc.0
  IL_03c9:  br.s       IL_03e9
  IL_03cb:  ldstr      "Subtract"
  IL_03d0:  stloc.0
  IL_03d1:  br.s       IL_03e9
  IL_03d3:  ldstr      "SubtractByteOffset"
  IL_03d8:  stloc.0
  IL_03d9:  br.s       IL_03e9
  IL_03db:  ldstr      "Unbox"
  IL_03e0:  stloc.0
  IL_03e1:  br.s       IL_03e9
  IL_03e3:  ldstr      "default"
  IL_03e8:  stloc.0
  IL_03e9:  ldloc.0
  IL_03ea:  ret
}
""");
 
        comp = CreateCompilation(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size     1003 (0x3eb)
  .maxstack  2
  .locals init (string V_0,
                uint V_1)
  IL_0000:  ldarg.0
  IL_0001:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  ldc.i4     0x76692b6a
  IL_000d:  bgt.un     IL_00b7
  IL_0012:  ldloc.1
  IL_0013:  ldc.i4     0x5cb9b8dd
  IL_0018:  bgt.un.s   IL_0063
  IL_001a:  ldloc.1
  IL_001b:  ldc.i4     0x1e73dfe4
  IL_0020:  bgt.un.s   IL_003d
  IL_0022:  ldloc.1
  IL_0023:  ldc.i4     0x10bc73b2
  IL_0028:  beq        IL_0153
  IL_002d:  ldloc.1
  IL_002e:  ldc.i4     0x1e73dfe4
  IL_0033:  beq        IL_028e
  IL_0038:  br         IL_03e3
  IL_003d:  ldloc.1
  IL_003e:  ldc.i4     0x3c92fd81
  IL_0043:  beq        IL_02e2
  IL_0048:  ldloc.1
  IL_0049:  ldc.i4     0x4f0befe5
  IL_004e:  beq        IL_0225
  IL_0053:  ldloc.1
  IL_0054:  ldc.i4     0x5cb9b8dd
  IL_0059:  beq        IL_01d1
  IL_005e:  br         IL_03e3
  IL_0063:  ldloc.1
  IL_0064:  ldc.i4     0x65710578
  IL_0069:  bgt.un.s   IL_0091
  IL_006b:  ldloc.1
  IL_006c:  ldc.i4     0x5dd56ead
  IL_0071:  beq        IL_0168
  IL_0076:  ldloc.1
  IL_0077:  ldc.i4     0x603ac699
  IL_007c:  beq        IL_02a3
  IL_0081:  ldloc.1
  IL_0082:  ldc.i4     0x65710578
  IL_0087:  beq        IL_02f7
  IL_008c:  br         IL_03e3
  IL_0091:  ldloc.1
  IL_0092:  ldc.i4     0x658f3664
  IL_0097:  beq        IL_01bc
  IL_009c:  ldloc.1
  IL_009d:  ldc.i4     0x665c79fc
  IL_00a2:  beq        IL_023a
  IL_00a7:  ldloc.1
  IL_00a8:  ldc.i4     0x76692b6a
  IL_00ad:  beq        IL_024f
  IL_00b2:  br         IL_03e3
  IL_00b7:  ldloc.1
  IL_00b8:  ldc.i4     0x9c4426da
  IL_00bd:  bgt.un.s   IL_0105
  IL_00bf:  ldloc.1
  IL_00c0:  ldc.i4     0x8e475485
  IL_00c5:  bgt.un.s   IL_00e2
  IL_00c7:  ldloc.1
  IL_00c8:  ldc.i4     0x79d7c769
  IL_00cd:  beq        IL_02b8
  IL_00d2:  ldloc.1
  IL_00d3:  ldc.i4     0x8e475485
  IL_00d8:  beq        IL_0210
  IL_00dd:  br         IL_03e3
  IL_00e2:  ldloc.1
  IL_00e3:  ldc.i4     0x96bf6e27
  IL_00e8:  beq        IL_030c
  IL_00ed:  ldloc.1
  IL_00ee:  ldc.i4     0x98df118c
  IL_00f3:  beq        IL_01fb
  IL_00f8:  ldloc.1
  IL_00f9:  ldc.i4     0x9c4426da
  IL_00fe:  beq.s      IL_017d
  IL_0100:  br         IL_03e3
  IL_0105:  ldloc.1
  IL_0106:  ldc.i4     0xac7eb953
  IL_010b:  bgt.un.s   IL_0130
  IL_010d:  ldloc.1
  IL_010e:  ldc.i4     0x9dc3aa14
  IL_0113:  beq.s      IL_0192
  IL_0115:  ldloc.1
  IL_0116:  ldc.i4     0xa5c174f5
  IL_011b:  beq        IL_0264
  IL_0120:  ldloc.1
  IL_0121:  ldc.i4     0xac7eb953
  IL_0126:  beq        IL_0279
  IL_012b:  br         IL_03e3
  IL_0130:  ldloc.1
  IL_0131:  ldc.i4     0xb5f98d32
  IL_0136:  beq        IL_01e6
  IL_013b:  ldloc.1
  IL_013c:  ldc.i4     0xdae6a448
  IL_0141:  beq        IL_02cd
  IL_0146:  ldloc.1
  IL_0147:  ldc.i4     0xf8b02149
  IL_014c:  beq.s      IL_01a7
  IL_014e:  br         IL_03e3
  IL_0153:  ldarg.0
  IL_0154:  ldstr      "AsPointer"
  IL_0159:  call       "bool string.op_Equality(string, string)"
  IL_015e:  brtrue     IL_0321
  IL_0163:  br         IL_03e3
  IL_0168:  ldarg.0
  IL_0169:  ldstr      "As"
  IL_016e:  call       "bool string.op_Equality(string, string)"
  IL_0173:  brtrue     IL_032c
  IL_0178:  br         IL_03e3
  IL_017d:  ldarg.0
  IL_017e:  ldstr      "AsRef"
  IL_0183:  call       "bool string.op_Equality(string, string)"
  IL_0188:  brtrue     IL_0337
  IL_018d:  br         IL_03e3
  IL_0192:  ldarg.0
  IL_0193:  ldstr      "Add"
  IL_0198:  call       "bool string.op_Equality(string, string)"
  IL_019d:  brtrue     IL_0342
  IL_01a2:  br         IL_03e3
  IL_01a7:  ldarg.0
  IL_01a8:  ldstr      "AddByteOffset"
  IL_01ad:  call       "bool string.op_Equality(string, string)"
  IL_01b2:  brtrue     IL_034d
  IL_01b7:  br         IL_03e3
  IL_01bc:  ldarg.0
  IL_01bd:  ldstr      "Copy"
  IL_01c2:  call       "bool string.op_Equality(string, string)"
  IL_01c7:  brtrue     IL_0358
  IL_01cc:  br         IL_03e3
  IL_01d1:  ldarg.0
  IL_01d2:  ldstr      "CopyBlock"
  IL_01d7:  call       "bool string.op_Equality(string, string)"
  IL_01dc:  brtrue     IL_0363
  IL_01e1:  br         IL_03e3
  IL_01e6:  ldarg.0
  IL_01e7:  ldstr      "CopyBlockUnaligned"
  IL_01ec:  call       "bool string.op_Equality(string, string)"
  IL_01f1:  brtrue     IL_036b
  IL_01f6:  br         IL_03e3
  IL_01fb:  ldarg.0
  IL_01fc:  ldstr      "InitBlock"
  IL_0201:  call       "bool string.op_Equality(string, string)"
  IL_0206:  brtrue     IL_0373
  IL_020b:  br         IL_03e3
  IL_0210:  ldarg.0
  IL_0211:  ldstr      "InitBlockUnaligned"
  IL_0216:  call       "bool string.op_Equality(string, string)"
  IL_021b:  brtrue     IL_037b
  IL_0220:  br         IL_03e3
  IL_0225:  ldarg.0
  IL_0226:  ldstr      "Read"
  IL_022b:  call       "bool string.op_Equality(string, string)"
  IL_0230:  brtrue     IL_0383
  IL_0235:  br         IL_03e3
  IL_023a:  ldarg.0
  IL_023b:  ldstr      "Write"
  IL_0240:  call       "bool string.op_Equality(string, string)"
  IL_0245:  brtrue     IL_038b
  IL_024a:  br         IL_03e3
  IL_024f:  ldarg.0
  IL_0250:  ldstr      "ReadUnaligned"
  IL_0255:  call       "bool string.op_Equality(string, string)"
  IL_025a:  brtrue     IL_0393
  IL_025f:  br         IL_03e3
  IL_0264:  ldarg.0
  IL_0265:  ldstr      "WriteUnaligned"
  IL_026a:  call       "bool string.op_Equality(string, string)"
  IL_026f:  brtrue     IL_039b
  IL_0274:  br         IL_03e3
  IL_0279:  ldarg.0
  IL_027a:  ldstr      "AreSame"
  IL_027f:  call       "bool string.op_Equality(string, string)"
  IL_0284:  brtrue     IL_03a3
  IL_0289:  br         IL_03e3
  IL_028e:  ldarg.0
  IL_028f:  ldstr      "ByteOffset"
  IL_0294:  call       "bool string.op_Equality(string, string)"
  IL_0299:  brtrue     IL_03ab
  IL_029e:  br         IL_03e3
  IL_02a3:  ldarg.0
  IL_02a4:  ldstr      "NullRef"
  IL_02a9:  call       "bool string.op_Equality(string, string)"
  IL_02ae:  brtrue     IL_03b3
  IL_02b3:  br         IL_03e3
  IL_02b8:  ldarg.0
  IL_02b9:  ldstr      "IsNullRef"
  IL_02be:  call       "bool string.op_Equality(string, string)"
  IL_02c3:  brtrue     IL_03bb
  IL_02c8:  br         IL_03e3
  IL_02cd:  ldarg.0
  IL_02ce:  ldstr      "SkipInit"
  IL_02d3:  call       "bool string.op_Equality(string, string)"
  IL_02d8:  brtrue     IL_03c3
  IL_02dd:  br         IL_03e3
  IL_02e2:  ldarg.0
  IL_02e3:  ldstr      "Subtract"
  IL_02e8:  call       "bool string.op_Equality(string, string)"
  IL_02ed:  brtrue     IL_03cb
  IL_02f2:  br         IL_03e3
  IL_02f7:  ldarg.0
  IL_02f8:  ldstr      "SubtractByteOffset"
  IL_02fd:  call       "bool string.op_Equality(string, string)"
  IL_0302:  brtrue     IL_03d3
  IL_0307:  br         IL_03e3
  IL_030c:  ldarg.0
  IL_030d:  ldstr      "Unbox"
  IL_0312:  call       "bool string.op_Equality(string, string)"
  IL_0317:  brtrue     IL_03db
  IL_031c:  br         IL_03e3
  IL_0321:  ldstr      "AsPointer"
  IL_0326:  stloc.0
  IL_0327:  br         IL_03e9
  IL_032c:  ldstr      "As"
  IL_0331:  stloc.0
  IL_0332:  br         IL_03e9
  IL_0337:  ldstr      "AsRef"
  IL_033c:  stloc.0
  IL_033d:  br         IL_03e9
  IL_0342:  ldstr      "Add"
  IL_0347:  stloc.0
  IL_0348:  br         IL_03e9
  IL_034d:  ldstr      "AddByteOffset"
  IL_0352:  stloc.0
  IL_0353:  br         IL_03e9
  IL_0358:  ldstr      "Copy"
  IL_035d:  stloc.0
  IL_035e:  br         IL_03e9
  IL_0363:  ldstr      "CopyBlock"
  IL_0368:  stloc.0
  IL_0369:  br.s       IL_03e9
  IL_036b:  ldstr      "CopyBlockUnaligned"
  IL_0370:  stloc.0
  IL_0371:  br.s       IL_03e9
  IL_0373:  ldstr      "InitBlock"
  IL_0378:  stloc.0
  IL_0379:  br.s       IL_03e9
  IL_037b:  ldstr      "InitBlockUnaligned"
  IL_0380:  stloc.0
  IL_0381:  br.s       IL_03e9
  IL_0383:  ldstr      "Read"
  IL_0388:  stloc.0
  IL_0389:  br.s       IL_03e9
  IL_038b:  ldstr      "Write"
  IL_0390:  stloc.0
  IL_0391:  br.s       IL_03e9
  IL_0393:  ldstr      "ReadUnaligned"
  IL_0398:  stloc.0
  IL_0399:  br.s       IL_03e9
  IL_039b:  ldstr      "WriteUnaligned"
  IL_03a0:  stloc.0
  IL_03a1:  br.s       IL_03e9
  IL_03a3:  ldstr      "AreSame"
  IL_03a8:  stloc.0
  IL_03a9:  br.s       IL_03e9
  IL_03ab:  ldstr      "ByteOffset"
  IL_03b0:  stloc.0
  IL_03b1:  br.s       IL_03e9
  IL_03b3:  ldstr      "NullRef"
  IL_03b8:  stloc.0
  IL_03b9:  br.s       IL_03e9
  IL_03bb:  ldstr      "IsNullRef"
  IL_03c0:  stloc.0
  IL_03c1:  br.s       IL_03e9
  IL_03c3:  ldstr      "SkipInit"
  IL_03c8:  stloc.0
  IL_03c9:  br.s       IL_03e9
  IL_03cb:  ldstr      "Subtract"
  IL_03d0:  stloc.0
  IL_03d1:  br.s       IL_03e9
  IL_03d3:  ldstr      "SubtractByteOffset"
  IL_03d8:  stloc.0
  IL_03d9:  br.s       IL_03e9
  IL_03db:  ldstr      "Unbox"
  IL_03e0:  stloc.0
  IL_03e1:  br.s       IL_03e9
  IL_03e3:  ldstr      "default"
  IL_03e8:  stloc.0
  IL_03e9:  ldloc.0
  IL_03ea:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void GetWellKnownType()
    {
        // Based on https://github.com/dotnet/runtime/blob/a30de6d40f69ef612b514344a5ec83fffd10b957/src/coreclr/tools/aot/ILLink.Shared/TypeSystemProxy/WellKnownType.cs#L48-L58
        // Buckets: 1, 1, 1, 1, 1, 1, 1, 1
        var source = """
assert("String");
assert("Nullable`1");
assert("Type");
assert("Array");
assert("Attribute");
assert("Object");
assert("NotSupportedException");
assert("Void");
 
assert("other", "default");
assert(null, "default");
assert("", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string value)
    {
        return value switch
        {
            "String" => "String",
            "Nullable`1" => "Nullable`1",
            "Type" => "Type",
            "Array" => "Array",
            "Attribute" => "Attribute",
            "Object" => "Object",
            "NotSupportedException" => "NotSupportedException",
            "Void" => "Void",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      312 (0x138)
  .maxstack  2
  .locals init (string V_0,
                int V_1,
                char V_2)
  IL_0000:  ldarg.0
  IL_0001:  brfalse    IL_0130
  IL_0006:  ldarg.0
  IL_0007:  call       "int string.Length.get"
  IL_000c:  stloc.1
  IL_000d:  ldloc.1
  IL_000e:  ldc.i4.4
  IL_000f:  sub
  IL_0010:  switch    (
        IL_0055,
        IL_00c3,
        IL_003e,
        IL_0130,
        IL_0130,
        IL_00d2,
        IL_0093)
  IL_0031:  ldloc.1
  IL_0032:  ldc.i4.s   21
  IL_0034:  beq        IL_00e1
  IL_0039:  br         IL_0130
  IL_003e:  ldarg.0
  IL_003f:  ldc.i4.0
  IL_0040:  call       "char string.this[int].get"
  IL_0045:  stloc.2
  IL_0046:  ldloc.2
  IL_0047:  ldc.i4.s   79
  IL_0049:  beq.s      IL_007e
  IL_004b:  ldloc.2
  IL_004c:  ldc.i4.s   83
  IL_004e:  beq.s      IL_006c
  IL_0050:  br         IL_0130
  IL_0055:  ldarg.0
  IL_0056:  ldc.i4.0
  IL_0057:  call       "char string.this[int].get"
  IL_005c:  stloc.2
  IL_005d:  ldloc.2
  IL_005e:  ldc.i4.s   84
  IL_0060:  beq.s      IL_00a5
  IL_0062:  ldloc.2
  IL_0063:  ldc.i4.s   86
  IL_0065:  beq.s      IL_00b4
  IL_0067:  br         IL_0130
  IL_006c:  ldarg.0
  IL_006d:  ldstr      "String"
  IL_0072:  call       "bool string.op_Equality(string, string)"
  IL_0077:  brtrue.s   IL_00f0
  IL_0079:  br         IL_0130
  IL_007e:  ldarg.0
  IL_007f:  ldstr      "Object"
  IL_0084:  call       "bool string.op_Equality(string, string)"
  IL_0089:  brtrue     IL_0118
  IL_008e:  br         IL_0130
  IL_0093:  ldarg.0
  IL_0094:  ldstr      "Nullable`1"
  IL_0099:  call       "bool string.op_Equality(string, string)"
  IL_009e:  brtrue.s   IL_00f8
  IL_00a0:  br         IL_0130
  IL_00a5:  ldarg.0
  IL_00a6:  ldstr      "Type"
  IL_00ab:  call       "bool string.op_Equality(string, string)"
  IL_00b0:  brtrue.s   IL_0100
  IL_00b2:  br.s       IL_0130
  IL_00b4:  ldarg.0
  IL_00b5:  ldstr      "Void"
  IL_00ba:  call       "bool string.op_Equality(string, string)"
  IL_00bf:  brtrue.s   IL_0128
  IL_00c1:  br.s       IL_0130
  IL_00c3:  ldarg.0
  IL_00c4:  ldstr      "Array"
  IL_00c9:  call       "bool string.op_Equality(string, string)"
  IL_00ce:  brtrue.s   IL_0108
  IL_00d0:  br.s       IL_0130
  IL_00d2:  ldarg.0
  IL_00d3:  ldstr      "Attribute"
  IL_00d8:  call       "bool string.op_Equality(string, string)"
  IL_00dd:  brtrue.s   IL_0110
  IL_00df:  br.s       IL_0130
  IL_00e1:  ldarg.0
  IL_00e2:  ldstr      "NotSupportedException"
  IL_00e7:  call       "bool string.op_Equality(string, string)"
  IL_00ec:  brtrue.s   IL_0120
  IL_00ee:  br.s       IL_0130
  IL_00f0:  ldstr      "String"
  IL_00f5:  stloc.0
  IL_00f6:  br.s       IL_0136
  IL_00f8:  ldstr      "Nullable`1"
  IL_00fd:  stloc.0
  IL_00fe:  br.s       IL_0136
  IL_0100:  ldstr      "Type"
  IL_0105:  stloc.0
  IL_0106:  br.s       IL_0136
  IL_0108:  ldstr      "Array"
  IL_010d:  stloc.0
  IL_010e:  br.s       IL_0136
  IL_0110:  ldstr      "Attribute"
  IL_0115:  stloc.0
  IL_0116:  br.s       IL_0136
  IL_0118:  ldstr      "Object"
  IL_011d:  stloc.0
  IL_011e:  br.s       IL_0136
  IL_0120:  ldstr      "NotSupportedException"
  IL_0125:  stloc.0
  IL_0126:  br.s       IL_0136
  IL_0128:  ldstr      "Void"
  IL_012d:  stloc.0
  IL_012e:  br.s       IL_0136
  IL_0130:  ldstr      "default"
  IL_0135:  stloc.0
  IL_0136:  ldloc.0
  IL_0137:  ret
}
""");
 
        comp = CreateCompilation(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      325 (0x145)
  .maxstack  2
  .locals init (string V_0,
                uint V_1)
  IL_0000:  ldarg.0
  IL_0001:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  ldc.i4     0x62fa988f
  IL_000d:  bgt.un.s   IL_0047
  IL_000f:  ldloc.1
  IL_0010:  ldc.i4     0x326d11d1
  IL_0015:  bgt.un.s   IL_0032
  IL_0017:  ldloc.1
  IL_0018:  ldc.i4     0x16c8fcc6
  IL_001d:  beq        IL_00b2
  IL_0022:  ldloc.1
  IL_0023:  ldc.i4     0x326d11d1
  IL_0028:  beq        IL_00df
  IL_002d:  br         IL_013d
  IL_0032:  ldloc.1
  IL_0033:  ldc.i4     0x604f4858
  IL_0038:  beq.s      IL_007c
  IL_003a:  ldloc.1
  IL_003b:  ldc.i4     0x62fa988f
  IL_0040:  beq.s      IL_00c1
  IL_0042:  br         IL_013d
  IL_0047:  ldloc.1
  IL_0048:  ldc.i4     0xc8e3517f
  IL_004d:  bgt.un.s   IL_0067
  IL_004f:  ldloc.1
  IL_0050:  ldc.i4     0x66898a9f
  IL_0055:  beq.s      IL_008e
  IL_0057:  ldloc.1
  IL_0058:  ldc.i4     0xc8e3517f
  IL_005d:  beq        IL_00ee
  IL_0062:  br         IL_013d
  IL_0067:  ldloc.1
  IL_0068:  ldc.i4     0xd155d06d
  IL_006d:  beq.s      IL_00a0
  IL_006f:  ldloc.1
  IL_0070:  ldc.i4     0xe58e64da
  IL_0075:  beq.s      IL_00d0
  IL_0077:  br         IL_013d
  IL_007c:  ldarg.0
  IL_007d:  ldstr      "String"
  IL_0082:  call       "bool string.op_Equality(string, string)"
  IL_0087:  brtrue.s   IL_00fd
  IL_0089:  br         IL_013d
  IL_008e:  ldarg.0
  IL_008f:  ldstr      "Nullable`1"
  IL_0094:  call       "bool string.op_Equality(string, string)"
  IL_0099:  brtrue.s   IL_0105
  IL_009b:  br         IL_013d
  IL_00a0:  ldarg.0
  IL_00a1:  ldstr      "Type"
  IL_00a6:  call       "bool string.op_Equality(string, string)"
  IL_00ab:  brtrue.s   IL_010d
  IL_00ad:  br         IL_013d
  IL_00b2:  ldarg.0
  IL_00b3:  ldstr      "Array"
  IL_00b8:  call       "bool string.op_Equality(string, string)"
  IL_00bd:  brtrue.s   IL_0115
  IL_00bf:  br.s       IL_013d
  IL_00c1:  ldarg.0
  IL_00c2:  ldstr      "Attribute"
  IL_00c7:  call       "bool string.op_Equality(string, string)"
  IL_00cc:  brtrue.s   IL_011d
  IL_00ce:  br.s       IL_013d
  IL_00d0:  ldarg.0
  IL_00d1:  ldstr      "Object"
  IL_00d6:  call       "bool string.op_Equality(string, string)"
  IL_00db:  brtrue.s   IL_0125
  IL_00dd:  br.s       IL_013d
  IL_00df:  ldarg.0
  IL_00e0:  ldstr      "NotSupportedException"
  IL_00e5:  call       "bool string.op_Equality(string, string)"
  IL_00ea:  brtrue.s   IL_012d
  IL_00ec:  br.s       IL_013d
  IL_00ee:  ldarg.0
  IL_00ef:  ldstr      "Void"
  IL_00f4:  call       "bool string.op_Equality(string, string)"
  IL_00f9:  brtrue.s   IL_0135
  IL_00fb:  br.s       IL_013d
  IL_00fd:  ldstr      "String"
  IL_0102:  stloc.0
  IL_0103:  br.s       IL_0143
  IL_0105:  ldstr      "Nullable`1"
  IL_010a:  stloc.0
  IL_010b:  br.s       IL_0143
  IL_010d:  ldstr      "Type"
  IL_0112:  stloc.0
  IL_0113:  br.s       IL_0143
  IL_0115:  ldstr      "Array"
  IL_011a:  stloc.0
  IL_011b:  br.s       IL_0143
  IL_011d:  ldstr      "Attribute"
  IL_0122:  stloc.0
  IL_0123:  br.s       IL_0143
  IL_0125:  ldstr      "Object"
  IL_012a:  stloc.0
  IL_012b:  br.s       IL_0143
  IL_012d:  ldstr      "NotSupportedException"
  IL_0132:  stloc.0
  IL_0133:  br.s       IL_0143
  IL_0135:  ldstr      "Void"
  IL_013a:  stloc.0
  IL_013b:  br.s       IL_0143
  IL_013d:  ldstr      "default"
  IL_0142:  stloc.0
  IL_0143:  ldloc.0
  IL_0144:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void GetLocalizedString()
    {
        // Based on https://github.com/dotnet/runtime/blob/a30de6d40f69ef612b514344a5ec83fffd10b957/src/libraries/System.ComponentModel.Primitives/src/System/ComponentModel/CategoryAttribute.cs#L202-L226
        // Buckets: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
        var source = """
assert("Action");
assert("Appearance");
assert("Asynchronous");
assert("Behavior");
assert("Config");
assert("Data");
assert("DDE");
assert("Default");
assert("Design");
assert("DragDrop");
assert("Focus");
assert("Font");
assert("Format");
assert("Key");
assert("Layout");
assert("List");
assert("Mouse");
assert("Position");
assert("Scale");
assert("Text");
assert("WindowStyle");
 
assert(null, "default");
assert("", "default");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string value)
    {
        return value switch
        {
            "Action" => "Action",
            "Appearance" => "Appearance",
            "Asynchronous" => "Asynchronous",
            "Behavior" => "Behavior",
            "Config" => "Config",
            "Data" => "Data",
            "DDE" => "DDE",
            "Default" => "Default",
            "Design" => "Design",
            "DragDrop" => "DragDrop",
            "Focus" => "Focus",
            "Font" => "Font",
            "Format" => "Format",
            "Key" => "Key",
            "Layout" => "Layout",
            "List" => "List",
            "Mouse" => "Mouse",
            "Position" => "Position",
            "Scale" => "Scale",
            "Text" => "Text",
            "WindowStyle" => "WindowStyle",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      910 (0x38e)
  .maxstack  2
  .locals init (string V_0,
                int V_1,
                char V_2)
  IL_0000:  ldarg.0
  IL_0001:  brfalse    IL_0386
  IL_0006:  ldarg.0
  IL_0007:  call       "int string.Length.get"
  IL_000c:  stloc.1
  IL_000d:  ldloc.1
  IL_000e:  ldc.i4.3
  IL_000f:  sub
  IL_0010:  switch    (
        IL_00d4,
        IL_009d,
        IL_00f1,
        IL_0042,
        IL_0266,
        IL_0078,
        IL_0386,
        IL_017f,
        IL_02ba,
        IL_0194)
  IL_003d:  br         IL_0386
  IL_0042:  ldarg.0
  IL_0043:  ldc.i4.0
  IL_0044:  call       "char string.this[int].get"
  IL_0049:  stloc.2
  IL_004a:  ldloc.2
  IL_004b:  ldc.i4.s   65
  IL_004d:  sub
  IL_004e:  switch    (
        IL_0116,
        IL_0386,
        IL_012b,
        IL_0140,
        IL_0386,
        IL_0155)
  IL_006b:  ldloc.2
  IL_006c:  ldc.i4.s   76
  IL_006e:  beq        IL_016a
  IL_0073:  br         IL_0386
  IL_0078:  ldarg.0
  IL_0079:  ldc.i4.0
  IL_007a:  call       "char string.this[int].get"
  IL_007f:  stloc.2
  IL_0080:  ldloc.2
  IL_0081:  ldc.i4.s   66
  IL_0083:  beq        IL_01a9
  IL_0088:  ldloc.2
  IL_0089:  ldc.i4.s   68
  IL_008b:  beq        IL_01be
  IL_0090:  ldloc.2
  IL_0091:  ldc.i4.s   80
  IL_0093:  beq        IL_01d3
  IL_0098:  br         IL_0386
  IL_009d:  ldarg.0
  IL_009e:  ldc.i4.0
  IL_009f:  call       "char string.this[int].get"
  IL_00a4:  stloc.2
  IL_00a5:  ldloc.2
  IL_00a6:  ldc.i4.s   70
  IL_00a8:  bgt.un.s   IL_00bf
  IL_00aa:  ldloc.2
  IL_00ab:  ldc.i4.s   68
  IL_00ad:  beq        IL_01e8
  IL_00b2:  ldloc.2
  IL_00b3:  ldc.i4.s   70
  IL_00b5:  beq        IL_01fd
  IL_00ba:  br         IL_0386
  IL_00bf:  ldloc.2
  IL_00c0:  ldc.i4.s   76
  IL_00c2:  beq        IL_0212
  IL_00c7:  ldloc.2
  IL_00c8:  ldc.i4.s   84
  IL_00ca:  beq        IL_0227
  IL_00cf:  br         IL_0386
  IL_00d4:  ldarg.0
  IL_00d5:  ldc.i4.0
  IL_00d6:  call       "char string.this[int].get"
  IL_00db:  stloc.2
  IL_00dc:  ldloc.2
  IL_00dd:  ldc.i4.s   68
  IL_00df:  beq        IL_023c
  IL_00e4:  ldloc.2
  IL_00e5:  ldc.i4.s   75
  IL_00e7:  beq        IL_0251
  IL_00ec:  br         IL_0386
  IL_00f1:  ldarg.0
  IL_00f2:  ldc.i4.0
  IL_00f3:  call       "char string.this[int].get"
  IL_00f8:  stloc.2
  IL_00f9:  ldloc.2
  IL_00fa:  ldc.i4.s   70
  IL_00fc:  beq        IL_027b
  IL_0101:  ldloc.2
  IL_0102:  ldc.i4.s   77
  IL_0104:  beq        IL_0290
  IL_0109:  ldloc.2
  IL_010a:  ldc.i4.s   83
  IL_010c:  beq        IL_02a5
  IL_0111:  br         IL_0386
  IL_0116:  ldarg.0
  IL_0117:  ldstr      "Action"
  IL_011c:  call       "bool string.op_Equality(string, string)"
  IL_0121:  brtrue     IL_02cf
  IL_0126:  br         IL_0386
  IL_012b:  ldarg.0
  IL_012c:  ldstr      "Config"
  IL_0131:  call       "bool string.op_Equality(string, string)"
  IL_0136:  brtrue     IL_02fb
  IL_013b:  br         IL_0386
  IL_0140:  ldarg.0
  IL_0141:  ldstr      "Design"
  IL_0146:  call       "bool string.op_Equality(string, string)"
  IL_014b:  brtrue     IL_031e
  IL_0150:  br         IL_0386
  IL_0155:  ldarg.0
  IL_0156:  ldstr      "Format"
  IL_015b:  call       "bool string.op_Equality(string, string)"
  IL_0160:  brtrue     IL_033e
  IL_0165:  br         IL_0386
  IL_016a:  ldarg.0
  IL_016b:  ldstr      "Layout"
  IL_0170:  call       "bool string.op_Equality(string, string)"
  IL_0175:  brtrue     IL_034e
  IL_017a:  br         IL_0386
  IL_017f:  ldarg.0
  IL_0180:  ldstr      "Appearance"
  IL_0185:  call       "bool string.op_Equality(string, string)"
  IL_018a:  brtrue     IL_02da
  IL_018f:  br         IL_0386
  IL_0194:  ldarg.0
  IL_0195:  ldstr      "Asynchronous"
  IL_019a:  call       "bool string.op_Equality(string, string)"
  IL_019f:  brtrue     IL_02e5
  IL_01a4:  br         IL_0386
  IL_01a9:  ldarg.0
  IL_01aa:  ldstr      "Behavior"
  IL_01af:  call       "bool string.op_Equality(string, string)"
  IL_01b4:  brtrue     IL_02f0
  IL_01b9:  br         IL_0386
  IL_01be:  ldarg.0
  IL_01bf:  ldstr      "DragDrop"
  IL_01c4:  call       "bool string.op_Equality(string, string)"
  IL_01c9:  brtrue     IL_0326
  IL_01ce:  br         IL_0386
  IL_01d3:  ldarg.0
  IL_01d4:  ldstr      "Position"
  IL_01d9:  call       "bool string.op_Equality(string, string)"
  IL_01de:  brtrue     IL_0366
  IL_01e3:  br         IL_0386
  IL_01e8:  ldarg.0
  IL_01e9:  ldstr      "Data"
  IL_01ee:  call       "bool string.op_Equality(string, string)"
  IL_01f3:  brtrue     IL_0306
  IL_01f8:  br         IL_0386
  IL_01fd:  ldarg.0
  IL_01fe:  ldstr      "Font"
  IL_0203:  call       "bool string.op_Equality(string, string)"
  IL_0208:  brtrue     IL_0336
  IL_020d:  br         IL_0386
  IL_0212:  ldarg.0
  IL_0213:  ldstr      "List"
  IL_0218:  call       "bool string.op_Equality(string, string)"
  IL_021d:  brtrue     IL_0356
  IL_0222:  br         IL_0386
  IL_0227:  ldarg.0
  IL_0228:  ldstr      "Text"
  IL_022d:  call       "bool string.op_Equality(string, string)"
  IL_0232:  brtrue     IL_0376
  IL_0237:  br         IL_0386
  IL_023c:  ldarg.0
  IL_023d:  ldstr      "DDE"
  IL_0242:  call       "bool string.op_Equality(string, string)"
  IL_0247:  brtrue     IL_030e
  IL_024c:  br         IL_0386
  IL_0251:  ldarg.0
  IL_0252:  ldstr      "Key"
  IL_0257:  call       "bool string.op_Equality(string, string)"
  IL_025c:  brtrue     IL_0346
  IL_0261:  br         IL_0386
  IL_0266:  ldarg.0
  IL_0267:  ldstr      "Default"
  IL_026c:  call       "bool string.op_Equality(string, string)"
  IL_0271:  brtrue     IL_0316
  IL_0276:  br         IL_0386
  IL_027b:  ldarg.0
  IL_027c:  ldstr      "Focus"
  IL_0281:  call       "bool string.op_Equality(string, string)"
  IL_0286:  brtrue     IL_032e
  IL_028b:  br         IL_0386
  IL_0290:  ldarg.0
  IL_0291:  ldstr      "Mouse"
  IL_0296:  call       "bool string.op_Equality(string, string)"
  IL_029b:  brtrue     IL_035e
  IL_02a0:  br         IL_0386
  IL_02a5:  ldarg.0
  IL_02a6:  ldstr      "Scale"
  IL_02ab:  call       "bool string.op_Equality(string, string)"
  IL_02b0:  brtrue     IL_036e
  IL_02b5:  br         IL_0386
  IL_02ba:  ldarg.0
  IL_02bb:  ldstr      "WindowStyle"
  IL_02c0:  call       "bool string.op_Equality(string, string)"
  IL_02c5:  brtrue     IL_037e
  IL_02ca:  br         IL_0386
  IL_02cf:  ldstr      "Action"
  IL_02d4:  stloc.0
  IL_02d5:  br         IL_038c
  IL_02da:  ldstr      "Appearance"
  IL_02df:  stloc.0
  IL_02e0:  br         IL_038c
  IL_02e5:  ldstr      "Asynchronous"
  IL_02ea:  stloc.0
  IL_02eb:  br         IL_038c
  IL_02f0:  ldstr      "Behavior"
  IL_02f5:  stloc.0
  IL_02f6:  br         IL_038c
  IL_02fb:  ldstr      "Config"
  IL_0300:  stloc.0
  IL_0301:  br         IL_038c
  IL_0306:  ldstr      "Data"
  IL_030b:  stloc.0
  IL_030c:  br.s       IL_038c
  IL_030e:  ldstr      "DDE"
  IL_0313:  stloc.0
  IL_0314:  br.s       IL_038c
  IL_0316:  ldstr      "Default"
  IL_031b:  stloc.0
  IL_031c:  br.s       IL_038c
  IL_031e:  ldstr      "Design"
  IL_0323:  stloc.0
  IL_0324:  br.s       IL_038c
  IL_0326:  ldstr      "DragDrop"
  IL_032b:  stloc.0
  IL_032c:  br.s       IL_038c
  IL_032e:  ldstr      "Focus"
  IL_0333:  stloc.0
  IL_0334:  br.s       IL_038c
  IL_0336:  ldstr      "Font"
  IL_033b:  stloc.0
  IL_033c:  br.s       IL_038c
  IL_033e:  ldstr      "Format"
  IL_0343:  stloc.0
  IL_0344:  br.s       IL_038c
  IL_0346:  ldstr      "Key"
  IL_034b:  stloc.0
  IL_034c:  br.s       IL_038c
  IL_034e:  ldstr      "Layout"
  IL_0353:  stloc.0
  IL_0354:  br.s       IL_038c
  IL_0356:  ldstr      "List"
  IL_035b:  stloc.0
  IL_035c:  br.s       IL_038c
  IL_035e:  ldstr      "Mouse"
  IL_0363:  stloc.0
  IL_0364:  br.s       IL_038c
  IL_0366:  ldstr      "Position"
  IL_036b:  stloc.0
  IL_036c:  br.s       IL_038c
  IL_036e:  ldstr      "Scale"
  IL_0373:  stloc.0
  IL_0374:  br.s       IL_038c
  IL_0376:  ldstr      "Text"
  IL_037b:  stloc.0
  IL_037c:  br.s       IL_038c
  IL_037e:  ldstr      "WindowStyle"
  IL_0383:  stloc.0
  IL_0384:  br.s       IL_038c
  IL_0386:  ldstr      "default"
  IL_038b:  stloc.0
  IL_038c:  ldloc.0
  IL_038d:  ret
}
""");
 
        comp = CreateCompilation(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      969 (0x3c9)
  .maxstack  2
  .locals init (string V_0,
                uint V_1)
  IL_0000:  ldarg.0
  IL_0001:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  ldc.i4     0x5ef81c51
  IL_000d:  bgt.un     IL_00ac
  IL_0012:  ldloc.1
  IL_0013:  ldc.i4     0x28528e11
  IL_0018:  bgt.un.s   IL_0063
  IL_001a:  ldloc.1
  IL_001b:  ldc.i4     0x19dc307e
  IL_0020:  bgt.un.s   IL_003d
  IL_0022:  ldloc.1
  IL_0023:  ldc.i4     0xa77a91f
  IL_0028:  beq        IL_0151
  IL_002d:  ldloc.1
  IL_002e:  ldc.i4     0x19dc307e
  IL_0033:  beq        IL_01e4
  IL_0038:  br         IL_03c1
  IL_003d:  ldloc.1
  IL_003e:  ldc.i4     0x1f19a447
  IL_0043:  beq        IL_0190
  IL_0048:  ldloc.1
  IL_0049:  ldc.i4     0x25989e7a
  IL_004e:  beq        IL_020e
  IL_0053:  ldloc.1
  IL_0054:  ldc.i4     0x28528e11
  IL_0059:  beq        IL_02cb
  IL_005e:  br         IL_03c1
  IL_0063:  ldloc.1
  IL_0064:  ldc.i4     0x31018b9f
  IL_0069:  bgt.un.s   IL_0086
  IL_006b:  ldloc.1
  IL_006c:  ldc.i4     0x2b1d9b64
  IL_0071:  beq        IL_02a1
  IL_0076:  ldloc.1
  IL_0077:  ldc.i4     0x31018b9f
  IL_007c:  beq        IL_0166
  IL_0081:  br         IL_03c1
  IL_0086:  ldloc.1
  IL_0087:  ldc.i4     0x3e142d5e
  IL_008c:  beq        IL_02e0
  IL_0091:  ldloc.1
  IL_0092:  ldc.i4     0x3f5279c5
  IL_0097:  beq        IL_01ba
  IL_009c:  ldloc.1
  IL_009d:  ldc.i4     0x5ef81c51
  IL_00a2:  beq        IL_017b
  IL_00a7:  br         IL_03c1
  IL_00ac:  ldloc.1
  IL_00ad:  ldc.i4     0xa77a5eb0
  IL_00b2:  bgt.un.s   IL_00fd
  IL_00b4:  ldloc.1
  IL_00b5:  ldc.i4     0x6a12e0e7
  IL_00ba:  bgt.un.s   IL_00d7
  IL_00bc:  ldloc.1
  IL_00bd:  ldc.i4     0x69116f10
  IL_00c2:  beq        IL_01cf
  IL_00c7:  ldloc.1
  IL_00c8:  ldc.i4     0x6a12e0e7
  IL_00cd:  beq        IL_01a5
  IL_00d2:  br         IL_03c1
  IL_00d7:  ldloc.1
  IL_00d8:  ldc.i4     0x7a836c5e
  IL_00dd:  beq        IL_02f5
  IL_00e2:  ldloc.1
  IL_00e3:  ldc.i4     0x8d2937a1
  IL_00e8:  beq        IL_028c
  IL_00ed:  ldloc.1
  IL_00ee:  ldc.i4     0xa77a5eb0
  IL_00f3:  beq        IL_0238
  IL_00f8:  br         IL_03c1
  IL_00fd:  ldloc.1
  IL_00fe:  ldc.i4     0xe27f342a
  IL_0103:  bgt.un.s   IL_012b
  IL_0105:  ldloc.1
  IL_0106:  ldc.i4     0xbc57b1b3
  IL_010b:  beq        IL_0223
  IL_0110:  ldloc.1
  IL_0111:  ldc.i4     0xcd1ac90c
  IL_0116:  beq        IL_0262
  IL_011b:  ldloc.1
  IL_011c:  ldc.i4     0xe27f342a
  IL_0121:  beq        IL_02b6
  IL_0126:  br         IL_03c1
  IL_012b:  ldloc.1
  IL_012c:  ldc.i4     0xe88d02ef
  IL_0131:  beq        IL_01f9
  IL_0136:  ldloc.1
  IL_0137:  ldc.i4     0xf788421f
  IL_013c:  beq        IL_0277
  IL_0141:  ldloc.1
  IL_0142:  ldc.i4     0xffb0ff72
  IL_0147:  beq        IL_024d
  IL_014c:  br         IL_03c1
  IL_0151:  ldarg.0
  IL_0152:  ldstr      "Action"
  IL_0157:  call       "bool string.op_Equality(string, string)"
  IL_015c:  brtrue     IL_030a
  IL_0161:  br         IL_03c1
  IL_0166:  ldarg.0
  IL_0167:  ldstr      "Appearance"
  IL_016c:  call       "bool string.op_Equality(string, string)"
  IL_0171:  brtrue     IL_0315
  IL_0176:  br         IL_03c1
  IL_017b:  ldarg.0
  IL_017c:  ldstr      "Asynchronous"
  IL_0181:  call       "bool string.op_Equality(string, string)"
  IL_0186:  brtrue     IL_0320
  IL_018b:  br         IL_03c1
  IL_0190:  ldarg.0
  IL_0191:  ldstr      "Behavior"
  IL_0196:  call       "bool string.op_Equality(string, string)"
  IL_019b:  brtrue     IL_032b
  IL_01a0:  br         IL_03c1
  IL_01a5:  ldarg.0
  IL_01a6:  ldstr      "Config"
  IL_01ab:  call       "bool string.op_Equality(string, string)"
  IL_01b0:  brtrue     IL_0336
  IL_01b5:  br         IL_03c1
  IL_01ba:  ldarg.0
  IL_01bb:  ldstr      "Data"
  IL_01c0:  call       "bool string.op_Equality(string, string)"
  IL_01c5:  brtrue     IL_0341
  IL_01ca:  br         IL_03c1
  IL_01cf:  ldarg.0
  IL_01d0:  ldstr      "DDE"
  IL_01d5:  call       "bool string.op_Equality(string, string)"
  IL_01da:  brtrue     IL_0349
  IL_01df:  br         IL_03c1
  IL_01e4:  ldarg.0
  IL_01e5:  ldstr      "Default"
  IL_01ea:  call       "bool string.op_Equality(string, string)"
  IL_01ef:  brtrue     IL_0351
  IL_01f4:  br         IL_03c1
  IL_01f9:  ldarg.0
  IL_01fa:  ldstr      "Design"
  IL_01ff:  call       "bool string.op_Equality(string, string)"
  IL_0204:  brtrue     IL_0359
  IL_0209:  br         IL_03c1
  IL_020e:  ldarg.0
  IL_020f:  ldstr      "DragDrop"
  IL_0214:  call       "bool string.op_Equality(string, string)"
  IL_0219:  brtrue     IL_0361
  IL_021e:  br         IL_03c1
  IL_0223:  ldarg.0
  IL_0224:  ldstr      "Focus"
  IL_0229:  call       "bool string.op_Equality(string, string)"
  IL_022e:  brtrue     IL_0369
  IL_0233:  br         IL_03c1
  IL_0238:  ldarg.0
  IL_0239:  ldstr      "Font"
  IL_023e:  call       "bool string.op_Equality(string, string)"
  IL_0243:  brtrue     IL_0371
  IL_0248:  br         IL_03c1
  IL_024d:  ldarg.0
  IL_024e:  ldstr      "Format"
  IL_0253:  call       "bool string.op_Equality(string, string)"
  IL_0258:  brtrue     IL_0379
  IL_025d:  br         IL_03c1
  IL_0262:  ldarg.0
  IL_0263:  ldstr      "Key"
  IL_0268:  call       "bool string.op_Equality(string, string)"
  IL_026d:  brtrue     IL_0381
  IL_0272:  br         IL_03c1
  IL_0277:  ldarg.0
  IL_0278:  ldstr      "Layout"
  IL_027d:  call       "bool string.op_Equality(string, string)"
  IL_0282:  brtrue     IL_0389
  IL_0287:  br         IL_03c1
  IL_028c:  ldarg.0
  IL_028d:  ldstr      "List"
  IL_0292:  call       "bool string.op_Equality(string, string)"
  IL_0297:  brtrue     IL_0391
  IL_029c:  br         IL_03c1
  IL_02a1:  ldarg.0
  IL_02a2:  ldstr      "Mouse"
  IL_02a7:  call       "bool string.op_Equality(string, string)"
  IL_02ac:  brtrue     IL_0399
  IL_02b1:  br         IL_03c1
  IL_02b6:  ldarg.0
  IL_02b7:  ldstr      "Position"
  IL_02bc:  call       "bool string.op_Equality(string, string)"
  IL_02c1:  brtrue     IL_03a1
  IL_02c6:  br         IL_03c1
  IL_02cb:  ldarg.0
  IL_02cc:  ldstr      "Scale"
  IL_02d1:  call       "bool string.op_Equality(string, string)"
  IL_02d6:  brtrue     IL_03a9
  IL_02db:  br         IL_03c1
  IL_02e0:  ldarg.0
  IL_02e1:  ldstr      "Text"
  IL_02e6:  call       "bool string.op_Equality(string, string)"
  IL_02eb:  brtrue     IL_03b1
  IL_02f0:  br         IL_03c1
  IL_02f5:  ldarg.0
  IL_02f6:  ldstr      "WindowStyle"
  IL_02fb:  call       "bool string.op_Equality(string, string)"
  IL_0300:  brtrue     IL_03b9
  IL_0305:  br         IL_03c1
  IL_030a:  ldstr      "Action"
  IL_030f:  stloc.0
  IL_0310:  br         IL_03c7
  IL_0315:  ldstr      "Appearance"
  IL_031a:  stloc.0
  IL_031b:  br         IL_03c7
  IL_0320:  ldstr      "Asynchronous"
  IL_0325:  stloc.0
  IL_0326:  br         IL_03c7
  IL_032b:  ldstr      "Behavior"
  IL_0330:  stloc.0
  IL_0331:  br         IL_03c7
  IL_0336:  ldstr      "Config"
  IL_033b:  stloc.0
  IL_033c:  br         IL_03c7
  IL_0341:  ldstr      "Data"
  IL_0346:  stloc.0
  IL_0347:  br.s       IL_03c7
  IL_0349:  ldstr      "DDE"
  IL_034e:  stloc.0
  IL_034f:  br.s       IL_03c7
  IL_0351:  ldstr      "Default"
  IL_0356:  stloc.0
  IL_0357:  br.s       IL_03c7
  IL_0359:  ldstr      "Design"
  IL_035e:  stloc.0
  IL_035f:  br.s       IL_03c7
  IL_0361:  ldstr      "DragDrop"
  IL_0366:  stloc.0
  IL_0367:  br.s       IL_03c7
  IL_0369:  ldstr      "Focus"
  IL_036e:  stloc.0
  IL_036f:  br.s       IL_03c7
  IL_0371:  ldstr      "Font"
  IL_0376:  stloc.0
  IL_0377:  br.s       IL_03c7
  IL_0379:  ldstr      "Format"
  IL_037e:  stloc.0
  IL_037f:  br.s       IL_03c7
  IL_0381:  ldstr      "Key"
  IL_0386:  stloc.0
  IL_0387:  br.s       IL_03c7
  IL_0389:  ldstr      "Layout"
  IL_038e:  stloc.0
  IL_038f:  br.s       IL_03c7
  IL_0391:  ldstr      "List"
  IL_0396:  stloc.0
  IL_0397:  br.s       IL_03c7
  IL_0399:  ldstr      "Mouse"
  IL_039e:  stloc.0
  IL_039f:  br.s       IL_03c7
  IL_03a1:  ldstr      "Position"
  IL_03a6:  stloc.0
  IL_03a7:  br.s       IL_03c7
  IL_03a9:  ldstr      "Scale"
  IL_03ae:  stloc.0
  IL_03af:  br.s       IL_03c7
  IL_03b1:  ldstr      "Text"
  IL_03b6:  stloc.0
  IL_03b7:  br.s       IL_03c7
  IL_03b9:  ldstr      "WindowStyle"
  IL_03be:  stloc.0
  IL_03bf:  br.s       IL_03c7
  IL_03c1:  ldstr      "default"
  IL_03c6:  stloc.0
  IL_03c7:  ldloc.0
  IL_03c8:  ret
}
""");
    }
 
    [Fact, WorkItem(56374, "https://github.com/dotnet/roslyn/issues/56374")]
    public void ParseGraphicsUnits()
    {
        // Based on https://github.com/dotnet/runtime/blob/a30de6d40f69ef612b514344a5ec83fffd10b957/src/libraries/System.Drawing.Common/src/System/Drawing/FontConverter.cs#L255-L265
        // Buckets: 1, 1, 1, 1, 1, 1, 1
        var source = """
assert("display");
assert("doc");
assert("pt");
assert("in");
assert("mm");
assert("px");
assert("world");
 
assert(null, "default");
assert("", "default");
assert("other", "default");
System.Console.Write("RAN");
 
void assert(string input, string expected = null)
{
    if (C.M(input) != (expected ?? input))
    {
        throw new System.Exception($"{input} produced {C.M(input)}");
    }
}
 
public class C
{
    public static string M(string value)
    {
        return value switch
        {
            "display" => "display",
            "doc" => "doc",
            "pt" => "pt",
            "in" => "in",
            "mm" => "mm",
            "px" => "px",
            "world" => "world",
            _ => "default"
        };
    }
}
""";
        var comp = CreateCompilation(source);
        comp.VerifyDiagnostics();
        var verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      268 (0x10c)
  .maxstack  2
  .locals init (string V_0,
                int V_1,
                char V_2)
  IL_0000:  ldarg.0
  IL_0001:  brfalse    IL_0104
  IL_0006:  ldarg.0
  IL_0007:  call       "int string.Length.get"
  IL_000c:  stloc.1
  IL_000d:  ldloc.1
  IL_000e:  ldc.i4.2
  IL_000f:  sub
  IL_0010:  switch    (
        IL_0032,
        IL_006f,
        IL_0104,
        IL_00bd,
        IL_0104,
        IL_005d)
  IL_002d:  br         IL_0104
  IL_0032:  ldarg.0
  IL_0033:  ldc.i4.1
  IL_0034:  call       "char string.this[int].get"
  IL_0039:  stloc.2
  IL_003a:  ldloc.2
  IL_003b:  ldc.i4.s   110
  IL_003d:  bgt.un.s   IL_004e
  IL_003f:  ldloc.2
  IL_0040:  ldc.i4.s   109
  IL_0042:  beq.s      IL_009f
  IL_0044:  ldloc.2
  IL_0045:  ldc.i4.s   110
  IL_0047:  beq.s      IL_0090
  IL_0049:  br         IL_0104
  IL_004e:  ldloc.2
  IL_004f:  ldc.i4.s   116
  IL_0051:  beq.s      IL_0081
  IL_0053:  ldloc.2
  IL_0054:  ldc.i4.s   120
  IL_0056:  beq.s      IL_00ae
  IL_0058:  br         IL_0104
  IL_005d:  ldarg.0
  IL_005e:  ldstr      "display"
  IL_0063:  call       "bool string.op_Equality(string, string)"
  IL_0068:  brtrue.s   IL_00cc
  IL_006a:  br         IL_0104
  IL_006f:  ldarg.0
  IL_0070:  ldstr      "doc"
  IL_0075:  call       "bool string.op_Equality(string, string)"
  IL_007a:  brtrue.s   IL_00d4
  IL_007c:  br         IL_0104
  IL_0081:  ldarg.0
  IL_0082:  ldstr      "pt"
  IL_0087:  call       "bool string.op_Equality(string, string)"
  IL_008c:  brtrue.s   IL_00dc
  IL_008e:  br.s       IL_0104
  IL_0090:  ldarg.0
  IL_0091:  ldstr      "in"
  IL_0096:  call       "bool string.op_Equality(string, string)"
  IL_009b:  brtrue.s   IL_00e4
  IL_009d:  br.s       IL_0104
  IL_009f:  ldarg.0
  IL_00a0:  ldstr      "mm"
  IL_00a5:  call       "bool string.op_Equality(string, string)"
  IL_00aa:  brtrue.s   IL_00ec
  IL_00ac:  br.s       IL_0104
  IL_00ae:  ldarg.0
  IL_00af:  ldstr      "px"
  IL_00b4:  call       "bool string.op_Equality(string, string)"
  IL_00b9:  brtrue.s   IL_00f4
  IL_00bb:  br.s       IL_0104
  IL_00bd:  ldarg.0
  IL_00be:  ldstr      "world"
  IL_00c3:  call       "bool string.op_Equality(string, string)"
  IL_00c8:  brtrue.s   IL_00fc
  IL_00ca:  br.s       IL_0104
  IL_00cc:  ldstr      "display"
  IL_00d1:  stloc.0
  IL_00d2:  br.s       IL_010a
  IL_00d4:  ldstr      "doc"
  IL_00d9:  stloc.0
  IL_00da:  br.s       IL_010a
  IL_00dc:  ldstr      "pt"
  IL_00e1:  stloc.0
  IL_00e2:  br.s       IL_010a
  IL_00e4:  ldstr      "in"
  IL_00e9:  stloc.0
  IL_00ea:  br.s       IL_010a
  IL_00ec:  ldstr      "mm"
  IL_00f1:  stloc.0
  IL_00f2:  br.s       IL_010a
  IL_00f4:  ldstr      "px"
  IL_00f9:  stloc.0
  IL_00fa:  br.s       IL_010a
  IL_00fc:  ldstr      "world"
  IL_0101:  stloc.0
  IL_0102:  br.s       IL_010a
  IL_0104:  ldstr      "default"
  IL_0109:  stloc.0
  IL_010a:  ldloc.0
  IL_010b:  ret
}
""");
 
        comp = CreateCompilation(source, parseOptions: TestOptions.RegularPreview.WithDisableLengthBasedSwitch());
        comp.VerifyDiagnostics();
        verifier = CompileAndVerify(comp, expectedOutput: "RAN");
        verifier.VerifyIL("C.M", """
{
  // Code size      272 (0x110)
  .maxstack  2
  .locals init (string V_0,
                uint V_1)
  IL_0000:  ldarg.0
  IL_0001:  call       "uint <PrivateImplementationDetails>.ComputeStringHash(string)"
  IL_0006:  stloc.1
  IL_0007:  ldloc.1
  IL_0008:  ldc.i4     0x4569f715
  IL_000d:  bgt.un.s   IL_002f
  IL_000f:  ldloc.1
  IL_0010:  ldc.i4     0x37a3e893
  IL_0015:  beq        IL_00c1
  IL_001a:  ldloc.1
  IL_001b:  ldc.i4     0x41387a9e
  IL_0020:  beq.s      IL_0094
  IL_0022:  ldloc.1
  IL_0023:  ldc.i4     0x4569f715
  IL_0028:  beq.s      IL_0061
  IL_002a:  br         IL_0108
  IL_002f:  ldloc.1
  IL_0030:  ldc.i4     0x5d4e6d01
  IL_0035:  bgt.un.s   IL_004c
  IL_0037:  ldloc.1
  IL_0038:  ldc.i4     0x594e66b5
  IL_003d:  beq.s      IL_00b2
  IL_003f:  ldloc.1
  IL_0040:  ldc.i4     0x5d4e6d01
  IL_0045:  beq.s      IL_0085
  IL_0047:  br         IL_0108
  IL_004c:  ldloc.1
  IL_004d:  ldc.i4     0x602e1e0f
  IL_0052:  beq.s      IL_00a3
  IL_0054:  ldloc.1
  IL_0055:  ldc.i4     0xea68c355
  IL_005a:  beq.s      IL_0073
  IL_005c:  br         IL_0108
  IL_0061:  ldarg.0
  IL_0062:  ldstr      "display"
  IL_0067:  call       "bool string.op_Equality(string, string)"
  IL_006c:  brtrue.s   IL_00d0
  IL_006e:  br         IL_0108
  IL_0073:  ldarg.0
  IL_0074:  ldstr      "doc"
  IL_0079:  call       "bool string.op_Equality(string, string)"
  IL_007e:  brtrue.s   IL_00d8
  IL_0080:  br         IL_0108
  IL_0085:  ldarg.0
  IL_0086:  ldstr      "pt"
  IL_008b:  call       "bool string.op_Equality(string, string)"
  IL_0090:  brtrue.s   IL_00e0
  IL_0092:  br.s       IL_0108
  IL_0094:  ldarg.0
  IL_0095:  ldstr      "in"
  IL_009a:  call       "bool string.op_Equality(string, string)"
  IL_009f:  brtrue.s   IL_00e8
  IL_00a1:  br.s       IL_0108
  IL_00a3:  ldarg.0
  IL_00a4:  ldstr      "mm"
  IL_00a9:  call       "bool string.op_Equality(string, string)"
  IL_00ae:  brtrue.s   IL_00f0
  IL_00b0:  br.s       IL_0108
  IL_00b2:  ldarg.0
  IL_00b3:  ldstr      "px"
  IL_00b8:  call       "bool string.op_Equality(string, string)"
  IL_00bd:  brtrue.s   IL_00f8
  IL_00bf:  br.s       IL_0108
  IL_00c1:  ldarg.0
  IL_00c2:  ldstr      "world"
  IL_00c7:  call       "bool string.op_Equality(string, string)"
  IL_00cc:  brtrue.s   IL_0100
  IL_00ce:  br.s       IL_0108
  IL_00d0:  ldstr      "display"
  IL_00d5:  stloc.0
  IL_00d6:  br.s       IL_010e
  IL_00d8:  ldstr      "doc"
  IL_00dd:  stloc.0
  IL_00de:  br.s       IL_010e
  IL_00e0:  ldstr      "pt"
  IL_00e5:  stloc.0
  IL_00e6:  br.s       IL_010e
  IL_00e8:  ldstr      "in"
  IL_00ed:  stloc.0
  IL_00ee:  br.s       IL_010e
  IL_00f0:  ldstr      "mm"
  IL_00f5:  stloc.0
  IL_00f6:  br.s       IL_010e
  IL_00f8:  ldstr      "px"
  IL_00fd:  stloc.0
  IL_00fe:  br.s       IL_010e
  IL_0100:  ldstr      "world"
  IL_0105:  stloc.0
  IL_0106:  br.s       IL_010e
  IL_0108:  ldstr      "default"
  IL_010d:  stloc.0
  IL_010e:  ldloc.0
  IL_010f:  ret
}
""");
    }
}