+- CompilationUnit[@PackageName = ""]
   +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "RecordPatternsExhaustiveSwitch", @CanonicalName = "RecordPatternsExhaustiveSwitch", @EffectiveVisibility = Visibility.V_PUBLIC, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = false, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "RecordPatternsExhaustiveSwitch", @Static = false, @TopLevel = true, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PUBLIC]
      +- ModifierList[@EffectiveModifiers = (JModifier.PUBLIC), @ExplicitModifiers = (JModifier.PUBLIC)]
      +- ClassBody[@Empty = false, @Size = 7]
         +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "RecordPatternsExhaustiveSwitch$A", @CanonicalName = "RecordPatternsExhaustiveSwitch.A", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = true, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "A", @Static = false, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
         |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
         |  +- ClassBody[@Empty = true, @Size = 0]
         +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "RecordPatternsExhaustiveSwitch$B", @CanonicalName = "RecordPatternsExhaustiveSwitch.B", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = false, @Local = false, @Nested = true, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "B", @Static = false, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
         |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
         |  +- ExtendsList[@Empty = false, @Size = 1]
         |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "A"]
         |  +- ClassBody[@Empty = true, @Size = 0]
         +- ClassDeclaration[@Abstract = true, @Annotation = false, @Anonymous = false, @BinaryName = "RecordPatternsExhaustiveSwitch$I", @CanonicalName = "RecordPatternsExhaustiveSwitch.I", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = false, @Interface = true, @Local = false, @Nested = true, @PackageName = "", @Record = false, @RegularClass = false, @RegularInterface = true, @SimpleName = "I", @Static = true, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
         |  +- ModifierList[@EffectiveModifiers = (JModifier.SEALED, JModifier.ABSTRACT, JModifier.STATIC), @ExplicitModifiers = (JModifier.SEALED)]
         |  +- PermitsList[@Empty = false, @Size = 2]
         |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "C"]
         |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "D"]
         |  +- ClassBody[@Empty = true, @Size = 0]
         +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "RecordPatternsExhaustiveSwitch$C", @CanonicalName = "RecordPatternsExhaustiveSwitch.C", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = true, @Interface = false, @Local = false, @Nested = true, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "C", @Static = false, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
         |  +- ModifierList[@EffectiveModifiers = (JModifier.FINAL), @ExplicitModifiers = (JModifier.FINAL)]
         |  +- ImplementsList[@Empty = false, @Size = 1]
         |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "I"]
         |  +- ClassBody[@Empty = true, @Size = 0]
         +- ClassDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "RecordPatternsExhaustiveSwitch$D", @CanonicalName = "RecordPatternsExhaustiveSwitch.D", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = true, @Interface = false, @Local = false, @Nested = true, @PackageName = "", @Record = false, @RegularClass = true, @RegularInterface = false, @SimpleName = "D", @Static = false, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
         |  +- ModifierList[@EffectiveModifiers = (JModifier.FINAL), @ExplicitModifiers = (JModifier.FINAL)]
         |  +- ImplementsList[@Empty = false, @Size = 1]
         |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "I"]
         |  +- ClassBody[@Empty = true, @Size = 0]
         +- RecordDeclaration[@Abstract = false, @Annotation = false, @Anonymous = false, @BinaryName = "RecordPatternsExhaustiveSwitch$Pair", @CanonicalName = "RecordPatternsExhaustiveSwitch.Pair", @EffectiveVisibility = Visibility.V_PACKAGE, @Enum = false, @Final = true, @Interface = false, @Local = false, @Nested = true, @PackageName = "", @Record = true, @RegularClass = false, @RegularInterface = false, @SimpleName = "Pair", @Static = true, @TopLevel = false, @UnnamedToplevelClass = false, @Visibility = Visibility.V_PACKAGE]
         |  +- ModifierList[@EffectiveModifiers = (JModifier.STATIC, JModifier.FINAL), @ExplicitModifiers = ()]
         |  +- TypeParameters[@Empty = false, @Size = 1]
         |  |  +- TypeParameter[@Image = "T", @Name = "T", @TypeBound = false]
         |  +- RecordComponentList[@Empty = false, @Size = 2, @Varargs = false]
         |  |  +- RecordComponent[@EffectiveVisibility = Visibility.V_PRIVATE, @Varargs = false, @Visibility = Visibility.V_PRIVATE]
         |  |  |  +- ModifierList[@EffectiveModifiers = (JModifier.PRIVATE, JModifier.FINAL), @ExplicitModifiers = ()]
         |  |  |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "T"]
         |  |  |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PRIVATE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = true, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "x", @PatternBinding = false, @RecordComponent = true, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PRIVATE]
         |  |  +- RecordComponent[@EffectiveVisibility = Visibility.V_PRIVATE, @Varargs = false, @Visibility = Visibility.V_PRIVATE]
         |  |     +- ModifierList[@EffectiveModifiers = (JModifier.PRIVATE, JModifier.FINAL), @ExplicitModifiers = ()]
         |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "T"]
         |  |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_PRIVATE, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = true, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "y", @PatternBinding = false, @RecordComponent = true, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_PRIVATE]
         |  +- RecordBody[@Empty = true, @Size = 0]
         +- MethodDeclaration[@Abstract = false, @Arity = 0, @EffectiveVisibility = Visibility.V_PACKAGE, @Final = false, @Name = "test", @Overridden = false, @Static = true, @Varargs = false, @Visibility = Visibility.V_PACKAGE, @Void = true]
            +- ModifierList[@EffectiveModifiers = (JModifier.STATIC), @ExplicitModifiers = (JModifier.STATIC)]
            +- VoidType[]
            +- FormalParameters[@Empty = true, @Size = 0]
            +- Block[@Empty = false, @Size = 5, @containsComment = false]
               +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
               |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
               |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Pair"]
               |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
               |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "A"]
               |  +- VariableDeclarator[@Initializer = true, @Name = "p1"]
               |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "p1", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
               |     +- NullLiteral[@CompileTimeConstant = false, @LiteralText = "null", @ParenthesisDepth = 0, @Parenthesized = false]
               +- LocalVariableDeclaration[@EffectiveVisibility = Visibility.V_LOCAL, @Final = false, @TypeInferred = false, @Visibility = Visibility.V_LOCAL]
               |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
               |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Pair"]
               |  |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
               |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "I"]
               |  +- VariableDeclarator[@Initializer = true, @Name = "p2"]
               |     +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = true, @Name = "p2", @PatternBinding = false, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
               |     +- NullLiteral[@CompileTimeConstant = false, @LiteralText = "null", @ParenthesisDepth = 0, @Parenthesized = false]
               +- SwitchStatement[@DefaultCase = false, @EnumSwitch = false, @ExhaustiveEnumSwitch = false, @FallthroughSwitch = false]
               |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "p1", @Name = "p1", @ParenthesisDepth = 0, @Parenthesized = false]
               |  +- SwitchArrowBranch[@Default = false]
               |  |  +- SwitchLabel[@Default = false]
               |  |  |  +- RecordPattern[]
               |  |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Pair"]
               |  |  |     |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
               |  |  |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "A"]
               |  |  |     +- PatternList[@Empty = false, @Size = 2]
               |  |  |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
               |  |  |        |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
               |  |  |        |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "A"]
               |  |  |        |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "a", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
               |  |  |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
               |  |  |           +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
               |  |  |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "B"]
               |  |  |           +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "b", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
               |  |  +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |     +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |     |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
               |  |     +- ArgumentList[@Empty = false, @Size = 1]
               |  |        +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "a", @Empty = false, @Image = "\"a\"", @Length = 1, @LiteralText = "\"a\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
               |  +- SwitchArrowBranch[@Default = false]
               |  |  +- SwitchLabel[@Default = false]
               |  |  |  +- RecordPattern[]
               |  |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Pair"]
               |  |  |     |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
               |  |  |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "A"]
               |  |  |     +- PatternList[@Empty = false, @Size = 2]
               |  |  |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
               |  |  |        |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
               |  |  |        |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "B"]
               |  |  |        |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "b", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
               |  |  |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
               |  |  |           +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
               |  |  |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "A"]
               |  |  |           +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "a", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
               |  |  +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |     +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |     |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
               |  |     +- ArgumentList[@Empty = false, @Size = 1]
               |  |        +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "a", @Empty = false, @Image = "\"a\"", @Length = 1, @LiteralText = "\"a\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
               |  +- SwitchArrowBranch[@Default = false]
               |     +- SwitchLabel[@Default = false]
               |     |  +- RecordPattern[]
               |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Pair"]
               |     |     |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
               |     |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "A"]
               |     |     +- PatternList[@Empty = false, @Size = 2]
               |     |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
               |     |        |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
               |     |        |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "A"]
               |     |        |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "a1", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
               |     |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
               |     |           +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
               |     |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "A"]
               |     |           +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "a2", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
               |     +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
               |        +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
               |        |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
               |        +- ArgumentList[@Empty = false, @Size = 1]
               |           +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "exhaustive now", @Empty = false, @Image = "\"exhaustive now\"", @Length = 14, @LiteralText = "\"exhaustive now\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
               +- SwitchStatement[@DefaultCase = false, @EnumSwitch = false, @ExhaustiveEnumSwitch = false, @FallthroughSwitch = false]
               |  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "p2", @Name = "p2", @ParenthesisDepth = 0, @Parenthesized = false]
               |  +- SwitchArrowBranch[@Default = false]
               |  |  +- SwitchLabel[@Default = false]
               |  |  |  +- RecordPattern[]
               |  |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Pair"]
               |  |  |     |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
               |  |  |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "I"]
               |  |  |     +- PatternList[@Empty = false, @Size = 2]
               |  |  |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
               |  |  |        |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
               |  |  |        |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "I"]
               |  |  |        |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "i", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
               |  |  |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
               |  |  |           +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
               |  |  |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "C"]
               |  |  |           +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "c", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
               |  |  +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |     +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
               |  |     |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |  |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
               |  |     +- ArgumentList[@Empty = false, @Size = 1]
               |  |        +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "a", @Empty = false, @Image = "\"a\"", @Length = 1, @LiteralText = "\"a\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
               |  +- SwitchArrowBranch[@Default = false]
               |     +- SwitchLabel[@Default = false]
               |     |  +- RecordPattern[]
               |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Pair"]
               |     |     |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
               |     |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "I"]
               |     |     +- PatternList[@Empty = false, @Size = 2]
               |     |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
               |     |        |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
               |     |        |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "I"]
               |     |        |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "i", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
               |     |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
               |     |           +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
               |     |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "D"]
               |     |           +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "d", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
               |     +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
               |        +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
               |        |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
               |        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
               |        +- ArgumentList[@Empty = false, @Size = 1]
               |           +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "a", @Empty = false, @Image = "\"a\"", @Length = 1, @LiteralText = "\"a\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
               +- SwitchStatement[@DefaultCase = false, @EnumSwitch = false, @ExhaustiveEnumSwitch = false, @FallthroughSwitch = false]
                  +- VariableAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "p2", @Name = "p2", @ParenthesisDepth = 0, @Parenthesized = false]
                  +- SwitchArrowBranch[@Default = false]
                  |  +- SwitchLabel[@Default = false]
                  |  |  +- RecordPattern[]
                  |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Pair"]
                  |  |     |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
                  |  |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "I"]
                  |  |     +- PatternList[@Empty = false, @Size = 2]
                  |  |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
                  |  |        |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
                  |  |        |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "C"]
                  |  |        |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "c", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
                  |  |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
                  |  |           +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
                  |  |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "I"]
                  |  |           +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "i", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
                  |  +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
                  |     +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
                  |     |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
                  |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
                  |     +- ArgumentList[@Empty = false, @Size = 1]
                  |        +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "a", @Empty = false, @Image = "\"a\"", @Length = 1, @LiteralText = "\"a\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
                  +- SwitchArrowBranch[@Default = false]
                  |  +- SwitchLabel[@Default = false]
                  |  |  +- RecordPattern[]
                  |  |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Pair"]
                  |  |     |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
                  |  |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "I"]
                  |  |     +- PatternList[@Empty = false, @Size = 2]
                  |  |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
                  |  |        |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
                  |  |        |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "D"]
                  |  |        |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "d", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
                  |  |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
                  |  |           +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
                  |  |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "C"]
                  |  |           +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "c", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
                  |  +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
                  |     +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
                  |     |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
                  |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
                  |     +- ArgumentList[@Empty = false, @Size = 1]
                  |        +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "a", @Empty = false, @Image = "\"a\"", @Length = 1, @LiteralText = "\"a\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
                  +- SwitchArrowBranch[@Default = false]
                     +- SwitchLabel[@Default = false]
                     |  +- RecordPattern[]
                     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "Pair"]
                     |     |  +- TypeArguments[@Diamond = false, @Empty = false, @Size = 1]
                     |     |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "I"]
                     |     +- PatternList[@Empty = false, @Size = 2]
                     |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
                     |        |  +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
                     |        |  +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "D"]
                     |        |  +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "d1", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
                     |        +- TypePattern[@EffectiveVisibility = Visibility.V_PACKAGE, @Visibility = Visibility.V_PACKAGE]
                     |           +- ModifierList[@EffectiveModifiers = (), @ExplicitModifiers = ()]
                     |           +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "D"]
                     |           +- VariableId[@ArrayType = false, @EffectiveVisibility = Visibility.V_LOCAL, @EnumConstant = false, @ExceptionBlockParameter = false, @Field = false, @Final = false, @ForLoopVariable = false, @ForeachVariable = false, @FormalParameter = false, @LambdaParameter = false, @LocalVariable = false, @Name = "d2", @PatternBinding = true, @RecordComponent = false, @ResourceDeclaration = false, @Static = false, @TypeInferred = false, @Unnamed = false, @Visibility = Visibility.V_LOCAL]
                     +- MethodCall[@CompileTimeConstant = false, @Image = "println", @MethodName = "println", @ParenthesisDepth = 0, @Parenthesized = false]
                        +- FieldAccess[@AccessType = AccessType.READ, @CompileTimeConstant = false, @Image = "out", @Name = "out", @ParenthesisDepth = 0, @Parenthesized = false]
                        |  +- TypeExpression[@CompileTimeConstant = false, @ParenthesisDepth = 0, @Parenthesized = false]
                        |     +- ClassType[@FullyQualified = false, @PackageQualifier = null, @SimpleName = "System"]
                        +- ArgumentList[@Empty = false, @Size = 1]
                           +- StringLiteral[@CompileTimeConstant = true, @ConstValue = "a", @Empty = false, @Image = "\"a\"", @Length = 1, @LiteralText = "\"a\"", @ParenthesisDepth = 0, @Parenthesized = false, @TextBlock = false]
