extensionTypes.cs: # 4| [Class] MyExtensionTypes # 6| 4: [ExtensionType] extension(String) #-----| 2: (Parameters) # 6| 0: [Parameter] s # 6| -1: [TypeMention] string #-----| 0: (Attributes) # 6| 1: [DefaultAttribute] [NotNull(...)] # 6| 0: [TypeMention] NotNullAttribute # 8| 4: [ExtensionMethod] M11 # 8| -1: [TypeMention] Void #-----| 2: (Parameters) # 6| 0: [Parameter] s # 6| -1: [TypeMention] string # 8| 4: [BlockStmt] {...} # 10| 5: [ExtensionType] extension(Int32) #-----| 2: (Parameters) # 10| 0: [Parameter] i1 # 10| -1: [TypeMention] int # 12| 4: [ExtensionMethod] M21 # 12| -1: [TypeMention] Void #-----| 2: (Parameters) # 10| 0: [Parameter] i1 # 10| -1: [TypeMention] int # 12| 4: [BlockStmt] {...} # 14| 6: [ExtensionType] extension(Int32) #-----| 2: (Parameters) # 14| 0: [Parameter] i2 # 14| -1: [TypeMention] int # 16| 4: [ExtensionMethod] M31 # 16| -1: [TypeMention] Void #-----| 2: (Parameters) # 14| 0: [Parameter] i2 # 14| -1: [TypeMention] int # 16| 4: [BlockStmt] {...} # 18| 7: [ExtensionType] extension(Int32) #-----| 2: (Parameters) # 18| 0: [Parameter] i3 # 18| -1: [TypeMention] int # 20| 4: [ExtensionMethod] M41 # 20| -1: [TypeMention] Void #-----| 2: (Parameters) # 18| 0: [Parameter] i3 # 18| -1: [TypeMention] int # 20| 4: [BlockStmt] {...} # 22| 8: [ExtensionType] extension(String) #-----| 2: (Parameters) # 22| 0: [Parameter] s # 22| -1: [TypeMention] string # 24| 4: [ExtensionMethod] M51 # 24| -1: [TypeMention] Void #-----| 2: (Parameters) # 22| 0: [Parameter] s # 22| -1: [TypeMention] string # 24| 4: [BlockStmt] {...} # 26| 9: [ExtensionType] extension(T1)`1 #-----| 1: (Type parameters) # 26| 0: [TypeParameter] T1 #-----| 2: (Parameters) # 26| 0: [Parameter] t1 # 26| -1: [TypeMention] T1 #-----| 0: (Attributes) # 26| 1: [DefaultAttribute] [NotNullWhen(...)] # 26| -1: [TypeMention] NotNullWhenAttribute # 26| 0: [BoolLiteral] true # 28| 4: [ExtensionMethod] M61`1 # 28| -1: [TypeMention] Void #-----| 1: (Type parameters) # 28| 0: [TypeParameter] T2 #-----| 2: (Parameters) # 26| 0: [Parameter] t1 # 26| -1: [TypeMention] T1 # 28| 1: [Parameter] o # 28| -1: [TypeMention] object # 28| 2: [Parameter] t2 # 28| -1: [TypeMention] T2 # 28| 4: [BlockStmt] {...} extensions.cs: # 4| [Class] MyExtensions # 6| 4: [ExtensionType] extension(String) #-----| 2: (Parameters) # 6| 0: [Parameter] s # 6| -1: [TypeMention] string # 8| 4: [Property] Prop1 # 8| -1: [TypeMention] bool # 8| 3: [ExtensionCallable,Getter] get_Prop1 #-----| 2: (Parameters) # 6| 0: [Parameter] s # 6| -1: [TypeMention] string # 8| 4: [GTExpr] ... > ... # 8| 0: [PropertyCall] access to property Length # 8| -1: [SyntheticExtensionParameterAccess] access to extension synthetic parameter s # 8| 1: [IntLiteral] 0 # 9| 5: [Property] Prop2 # 9| -1: [TypeMention] bool # 9| 3: [ExtensionCallable,Getter] get_Prop2 #-----| 2: (Parameters) # 6| 0: [Parameter] s # 6| -1: [TypeMention] string # 9| 4: [BlockStmt] {...} # 9| 0: [ReturnStmt] return ...; # 9| 0: [BoolLiteral] true # 9| 4: [ExtensionCallable,Setter] set_Prop2 #-----| 2: (Parameters) # 6| 0: [Parameter] s # 6| -1: [TypeMention] string # 9| 1: [Parameter] value # 9| 4: [BlockStmt] {...} # 10| 6: [Property] StaticProp1 # 10| -1: [TypeMention] bool # 10| 3: [ExtensionCallable,Getter] get_StaticProp1 # 10| 4: [BlockStmt] {...} # 10| 0: [ReturnStmt] return ...; # 10| 0: [BoolLiteral] false # 11| 7: [ExtensionMethod] M1 # 11| -1: [TypeMention] bool #-----| 2: (Parameters) # 6| 0: [Parameter] s # 6| -1: [TypeMention] string # 11| 4: [IsExpr] ... is ... # 11| 0: [SyntheticExtensionParameterAccess] access to extension synthetic parameter s # 11| 1: [NotPatternExpr] not ... # 11| 0: [ConstantPatternExpr,NullLiteral] null # 12| 8: [ExtensionMethod] M2 # 12| -1: [TypeMention] string #-----| 2: (Parameters) # 6| 0: [Parameter] s # 6| -1: [TypeMention] string # 12| 1: [Parameter] other # 12| -1: [TypeMention] string # 12| 4: [BlockStmt] {...} # 12| 0: [ReturnStmt] return ...; # 12| 0: [AddExpr] ... + ... # 12| 0: [SyntheticExtensionParameterAccess] access to extension synthetic parameter s # 12| 1: [ParameterAccess] access to parameter other # 13| 9: [ExtensionMethod] StaticM1 # 13| -1: [TypeMention] int # 13| 4: [BlockStmt] {...} # 13| 0: [ReturnStmt] return ...; # 13| 0: [IntLiteral] 0 # 14| 10: [ExtensionMethod] StaticM2 # 14| -1: [TypeMention] int #-----| 2: (Parameters) # 14| 0: [Parameter] x # 14| -1: [TypeMention] string # 14| 4: [BlockStmt] {...} # 14| 0: [ReturnStmt] return ...; # 14| 0: [PropertyCall] access to property Length # 14| -1: [ParameterAccess] access to parameter x # 15| 11: [ExtensionCallable,MulOperator] * # 15| -1: [TypeMention] string #-----| 2: (Parameters) # 15| 0: [Parameter] a # 15| -1: [TypeMention] int # 15| 1: [Parameter] b # 15| -1: [TypeMention] string # 15| 4: [BlockStmt] {...} # 15| 0: [ReturnStmt] return ...; # 15| 0: [StringLiteralUtf16] "" # 16| 14: [ExtensionMethod] StringGenericM1`1 # 16| -1: [TypeMention] T #-----| 1: (Type parameters) # 16| 0: [TypeParameter] T #-----| 2: (Parameters) # 6| 0: [Parameter] s # 6| -1: [TypeMention] string # 16| 1: [Parameter] t # 16| -1: [TypeMention] T # 16| 2: [Parameter] o # 16| -1: [TypeMention] object # 16| 4: [BlockStmt] {...} # 16| 0: [ReturnStmt] return ...; # 16| 0: [ParameterAccess] access to parameter t # 17| 15: [ExtensionCallable,IncrementOperator] ++ # 17| -1: [TypeMention] Void #-----| 2: (Parameters) # 6| 0: [Parameter] s # 6| -1: [TypeMention] string # 17| 4: [BlockStmt] {...} # 18| 16: [DecrementOperator,ExtensionCallable] -- # 18| -1: [TypeMention] string #-----| 2: (Parameters) # 18| 0: [Parameter] o # 18| -1: [TypeMention] string # 18| 4: [BlockStmt] {...} # 18| 0: [ReturnStmt] return ...; # 18| 0: [ParameterAccess] access to parameter o # 21| 5: [ExtensionType] extension(Object) # 23| 4: [ExtensionMethod] StaticObjectM1 # 23| -1: [TypeMention] int # 23| 4: [BlockStmt] {...} # 23| 0: [ReturnStmt] return ...; # 23| 0: [IntLiteral] 0 # 24| 5: [ExtensionMethod] StaticObjectM2 # 24| -1: [TypeMention] int #-----| 2: (Parameters) # 24| 0: [Parameter] s # 24| -1: [TypeMention] string # 24| 4: [BlockStmt] {...} # 24| 0: [ReturnStmt] return ...; # 24| 0: [PropertyCall] access to property Length # 24| -1: [ParameterAccess] access to parameter s # 25| 6: [Property] StaticProp # 25| -1: [TypeMention] bool # 25| 3: [ExtensionCallable,Getter] get_StaticProp # 25| 4: [BoolLiteral] true # 28| 8: [ExtensionType] extension(T)`1 #-----| 1: (Type parameters) # 28| 0: [TypeParameter] T #-----| 2: (Parameters) # 28| 0: [Parameter] t # 28| -1: [TypeMention] T # 30| 4: [Property] GenericProp1 # 30| -1: [TypeMention] bool # 30| 3: [ExtensionCallable,Getter] get_GenericProp1 #-----| 2: (Parameters) # 28| 0: [Parameter] t # 28| -1: [TypeMention] T # 30| 4: [IsExpr] ... is ... # 30| 0: [SyntheticExtensionParameterAccess] access to extension synthetic parameter t # 30| 1: [NotPatternExpr] not ... # 30| 0: [ConstantPatternExpr,NullLiteral] null # 31| 5: [Property] GenericProp2 # 31| -1: [TypeMention] bool # 31| 3: [ExtensionCallable,Getter] get_GenericProp2 #-----| 2: (Parameters) # 28| 0: [Parameter] t # 28| -1: [TypeMention] T # 31| 4: [BlockStmt] {...} # 31| 0: [ReturnStmt] return ...; # 31| 0: [BoolLiteral] true # 31| 4: [ExtensionCallable,Setter] set_GenericProp2 #-----| 2: (Parameters) # 28| 0: [Parameter] t # 28| -1: [TypeMention] T # 31| 1: [Parameter] value # 31| 4: [BlockStmt] {...} # 32| 6: [ExtensionMethod] GenericM1 # 32| -1: [TypeMention] bool #-----| 2: (Parameters) # 28| 0: [Parameter] t # 28| -1: [TypeMention] T # 32| 4: [IsExpr] ... is ... # 32| 0: [SyntheticExtensionParameterAccess] access to extension synthetic parameter t # 32| 1: [NotPatternExpr] not ... # 32| 0: [ConstantPatternExpr,NullLiteral] null # 33| 7: [ExtensionMethod] GenericM2`1 # 33| -1: [TypeMention] Void #-----| 1: (Type parameters) # 33| 0: [TypeParameter] S #-----| 2: (Parameters) # 28| 0: [Parameter] t # 28| -1: [TypeMention] T # 33| 1: [Parameter] other # 33| -1: [TypeMention] S # 33| 4: [BlockStmt] {...} # 34| 8: [ExtensionMethod] GenericStaticM1 # 34| -1: [TypeMention] Void #-----| 2: (Parameters) # 28| 0: [Parameter] t # 28| -1: [TypeMention] T # 34| 4: [BlockStmt] {...} # 35| 9: [ExtensionMethod] GenericStaticM2`1 # 35| -1: [TypeMention] Void #-----| 1: (Type parameters) # 35| 0: [TypeParameter] S #-----| 2: (Parameters) # 35| 0: [Parameter] other # 35| -1: [TypeMention] S # 35| 4: [BlockStmt] {...} # 36| 10: [AddOperator,ExtensionCallable] + # 36| -1: [TypeMention] T #-----| 2: (Parameters) # 36| 0: [Parameter] a # 36| -1: [TypeMention] T # 36| 1: [Parameter] b # 36| -1: [TypeMention] T # 36| 4: [BlockStmt] {...} # 36| 0: [ReturnStmt] return ...; # 36| 0: [NullLiteral] null # 40| [Class] ClassicExtensions # 42| 4: [ExtensionMethod] M3 # 42| -1: [TypeMention] bool #-----| 2: (Parameters) # 42| 0: [Parameter] s # 42| -1: [TypeMention] string # 42| 4: [IsExpr] ... is ... # 42| 0: [ParameterAccess] access to parameter s # 42| 1: [NotPatternExpr] not ... # 42| 0: [ConstantPatternExpr,NullLiteral] null # 45| [Class] C # 47| 6: [Method] CallingExtensions # 47| -1: [TypeMention] Void # 48| 4: [BlockStmt] {...} # 49| 0: [LocalVariableDeclStmt] ... ...; # 49| 0: [LocalVariableDeclAndInitExpr] String s = ... # 49| -1: [TypeMention] string # 49| 0: [LocalVariableAccess] access to local variable s # 49| 1: [StringLiteralUtf16] "Hello World." # 52| 1: [LocalVariableDeclStmt] ... ...; # 52| 0: [LocalVariableDeclAndInitExpr] Boolean x11 = ... # 52| -1: [TypeMention] bool # 52| 0: [LocalVariableAccess] access to local variable x11 # 52| 1: [ExtensionPropertyCall] access to property Prop1 # 52| -1: [LocalVariableAccess] access to local variable s # 53| 2: [LocalVariableDeclStmt] ... ...; # 53| 0: [LocalVariableDeclAndInitExpr] Boolean x12 = ... # 53| -1: [TypeMention] bool # 53| 0: [LocalVariableAccess] access to local variable x12 # 53| 1: [ExtensionPropertyCall] access to property Prop2 # 53| -1: [LocalVariableAccess] access to local variable s # 54| 3: [ExprStmt] ...; # 54| 0: [AssignExpr] ... = ... # 54| 0: [ExtensionPropertyCall] access to property Prop2 # 54| -1: [LocalVariableAccess] access to local variable s # 54| 1: [BoolLiteral] true # 55| 4: [LocalVariableDeclStmt] ... ...; # 55| 0: [LocalVariableDeclAndInitExpr] Boolean x13 = ... # 55| -1: [TypeMention] bool # 55| 0: [LocalVariableAccess] access to local variable x13 # 55| 1: [ExtensionPropertyCall] access to property StaticProp1 # 55| -1: [TypeAccess] access to type String # 55| 0: [TypeMention] string # 56| 5: [LocalVariableDeclStmt] ... ...; # 56| 0: [LocalVariableDeclAndInitExpr] Boolean x14 = ... # 56| -1: [TypeMention] bool # 56| 0: [LocalVariableAccess] access to local variable x14 # 56| 1: [ExtensionPropertyCall] access to property StaticProp # 56| -1: [TypeAccess] access to type Object # 56| 0: [TypeMention] object # 59| 6: [LocalVariableDeclStmt] ... ...; # 59| 0: [LocalVariableDeclAndInitExpr] Boolean x21 = ... # 59| -1: [TypeMention] bool # 59| 0: [LocalVariableAccess] access to local variable x21 # 59| 1: [MethodCall] call to method M1 # 59| -1: [LocalVariableAccess] access to local variable s # 60| 7: [LocalVariableDeclStmt] ... ...; # 60| 0: [LocalVariableDeclAndInitExpr] String x22 = ... # 60| -1: [TypeMention] string # 60| 0: [LocalVariableAccess] access to local variable x22 # 60| 1: [MethodCall] call to method M2 # 60| -1: [LocalVariableAccess] access to local variable s # 60| 0: [StringLiteralUtf16] "!!!" # 61| 8: [LocalVariableDeclStmt] ... ...; # 61| 0: [LocalVariableDeclAndInitExpr] Int32 x23 = ... # 61| -1: [TypeMention] int # 61| 0: [LocalVariableAccess] access to local variable x23 # 61| 1: [MethodCall] call to method StaticM1 # 61| -1: [TypeAccess] access to type String # 61| 0: [TypeMention] string # 62| 9: [LocalVariableDeclStmt] ... ...; # 62| 0: [LocalVariableDeclAndInitExpr] Int32 x24 = ... # 62| -1: [TypeMention] int # 62| 0: [LocalVariableAccess] access to local variable x24 # 62| 1: [MethodCall] call to method StaticM2 # 62| -1: [TypeAccess] access to type String # 62| 0: [TypeMention] string # 62| 0: [LocalVariableAccess] access to local variable s # 63| 10: [LocalVariableDeclStmt] ... ...; # 63| 0: [LocalVariableDeclAndInitExpr] Int32 x25 = ... # 63| -1: [TypeMention] int # 63| 0: [LocalVariableAccess] access to local variable x25 # 63| 1: [MethodCall] call to method StaticObjectM1 # 63| -1: [TypeAccess] access to type Object # 63| 0: [TypeMention] object # 64| 11: [LocalVariableDeclStmt] ... ...; # 64| 0: [LocalVariableDeclAndInitExpr] Int32 x26 = ... # 64| -1: [TypeMention] int # 64| 0: [LocalVariableAccess] access to local variable x26 # 64| 1: [MethodCall] call to method StaticObjectM2 # 64| -1: [TypeAccess] access to type Object # 64| 0: [TypeMention] object # 64| 0: [LocalVariableAccess] access to local variable s # 67| 12: [LocalVariableDeclStmt] ... ...; # 67| 0: [LocalVariableDeclAndInitExpr] String x30 = ... # 67| -1: [TypeMention] string # 67| 0: [LocalVariableAccess] access to local variable x30 # 67| 1: [ExtensionOperatorCall] call to operator * # 67| 0: [IntLiteral] 3 # 67| 1: [LocalVariableAccess] access to local variable s # 68| 13: [ExprStmt] ...; # 68| 0: [ExtensionOperatorCall] call to operator ++ # 68| 0: [LocalVariableAccess] access to local variable s # 69| 14: [ExprStmt] ...; # 69| 0: [ExtensionOperatorCall] call to operator -- # 69| 0: [LocalVariableAccess] access to local variable s # 72| 15: [LocalVariableDeclStmt] ... ...; # 72| 0: [LocalVariableDeclAndInitExpr] Boolean y = ... # 72| -1: [TypeMention] bool # 72| 0: [LocalVariableAccess] access to local variable y # 72| 1: [MethodCall] call to method M3 # 72| -1: [LocalVariableAccess] access to local variable s # 75| 16: [ExprStmt] ...; # 75| 0: [MethodCall] call to method M1 # 75| -1: [TypeAccess] access to type MyExtensions # 75| 0: [TypeMention] MyExtensions # 75| 0: [LocalVariableAccess] access to local variable s # 76| 17: [ExprStmt] ...; # 76| 0: [MethodCall] call to method M2 # 76| -1: [TypeAccess] access to type MyExtensions # 76| 0: [TypeMention] MyExtensions # 76| 0: [LocalVariableAccess] access to local variable s # 76| 1: [StringLiteralUtf16] "!!!" # 77| 18: [ExprStmt] ...; # 77| 0: [MethodCall] call to method StaticM1 # 77| -1: [TypeAccess] access to type MyExtensions # 77| 0: [TypeMention] MyExtensions # 78| 19: [ExprStmt] ...; # 78| 0: [MethodCall] call to method StaticM2 # 78| -1: [TypeAccess] access to type MyExtensions # 78| 0: [TypeMention] MyExtensions # 78| 0: [LocalVariableAccess] access to local variable s # 79| 20: [ExprStmt] ...; # 79| 0: [MethodCall] call to method StaticObjectM1 # 79| -1: [TypeAccess] access to type MyExtensions # 79| 0: [TypeMention] MyExtensions # 80| 21: [ExprStmt] ...; # 80| 0: [MethodCall] call to method StaticObjectM2 # 80| -1: [TypeAccess] access to type MyExtensions # 80| 0: [TypeMention] MyExtensions # 80| 0: [LocalVariableAccess] access to local variable s # 83| 22: [ExprStmt] ...; # 83| 0: [ExtensionOperatorCall] call to operator * # 83| -1: [TypeAccess] access to type MyExtensions # 83| 0: [TypeMention] MyExtensions # 83| 0: [IntLiteral] 3 # 83| 1: [LocalVariableAccess] access to local variable s # 84| 23: [ExprStmt] ...; # 84| 0: [ExtensionOperatorCall] call to operator ++ # 84| -1: [TypeAccess] access to type MyExtensions # 84| 0: [TypeMention] MyExtensions # 84| 0: [LocalVariableAccess] access to local variable s # 85| 24: [ExprStmt] ...; # 85| 0: [ExtensionOperatorCall] call to operator -- # 85| -1: [TypeAccess] access to type MyExtensions # 85| 0: [TypeMention] MyExtensions # 85| 0: [LocalVariableAccess] access to local variable s # 88| 25: [ExprStmt] ...; # 88| 0: [MethodCall] call to extension accessor get_Prop1 # 88| -1: [TypeAccess] access to type MyExtensions # 88| 0: [TypeMention] MyExtensions # 88| 0: [LocalVariableAccess] access to local variable s # 89| 26: [ExprStmt] ...; # 89| 0: [MethodCall] call to extension accessor get_Prop2 # 89| -1: [TypeAccess] access to type MyExtensions # 89| 0: [TypeMention] MyExtensions # 89| 0: [LocalVariableAccess] access to local variable s # 90| 27: [ExprStmt] ...; # 90| 0: [MethodCall] call to extension accessor set_Prop2 # 90| -1: [TypeAccess] access to type MyExtensions # 90| 0: [TypeMention] MyExtensions # 90| 0: [LocalVariableAccess] access to local variable s # 90| 1: [BoolLiteral] false # 91| 28: [ExprStmt] ...; # 91| 0: [MethodCall] call to extension accessor get_StaticProp # 91| -1: [TypeAccess] access to type MyExtensions # 91| 0: [TypeMention] MyExtensions # 94| 7: [Method] CallingGenericExtensions # 94| -1: [TypeMention] Void # 95| 4: [BlockStmt] {...} # 96| 0: [LocalVariableDeclStmt] ... ...; # 96| 0: [LocalVariableDeclAndInitExpr] String s = ... # 96| -1: [TypeMention] string # 96| 0: [LocalVariableAccess] access to local variable s # 96| 1: [StringLiteralUtf16] "Hello Generic World." # 97| 1: [LocalVariableDeclStmt] ... ...; # 97| 0: [LocalVariableDeclAndInitExpr] Object o = ... # 97| -1: [TypeMention] object # 97| 0: [LocalVariableAccess] access to local variable o # 97| 1: [ObjectCreation] object creation of type Object # 97| 0: [TypeMention] object # 100| 2: [ExprStmt] ...; # 100| 0: [MethodCall] call to method GenericM1 # 100| -1: [LocalVariableAccess] access to local variable o # 101| 3: [ExprStmt] ...; # 101| 0: [MethodCall] call to method GenericM1 # 101| -1: [LocalVariableAccess] access to local variable s # 104| 4: [ExprStmt] ...; # 104| 0: [MethodCall] call to method GenericM1 # 104| -1: [TypeAccess] access to type MyExtensions # 104| 0: [TypeMention] MyExtensions # 104| 0: [LocalVariableAccess] access to local variable o # 105| 5: [ExprStmt] ...; # 105| 0: [MethodCall] call to method GenericM1 # 105| -1: [TypeAccess] access to type MyExtensions # 105| 0: [TypeMention] MyExtensions # 105| 0: [LocalVariableAccess] access to local variable s # 107| 6: [ExprStmt] ...; # 107| 0: [MethodCall] call to method GenericM2 # 107| -1: [LocalVariableAccess] access to local variable o # 107| 0: [IntLiteral] 42 # 108| 7: [ExprStmt] ...; # 108| 0: [MethodCall] call to method GenericM2 # 108| -1: [TypeAccess] access to type MyExtensions # 108| 0: [TypeMention] MyExtensions # 108| 0: [LocalVariableAccess] access to local variable o # 108| 1: [IntLiteral] 42 # 110| 8: [ExprStmt] ...; # 110| 0: [MethodCall] call to method StringGenericM1 # 110| -1: [LocalVariableAccess] access to local variable s # 110| 0: [IntLiteral] 7 # 110| 1: [ObjectCreation] object creation of type Object # 110| 0: [TypeMention] object # 111| 9: [ExprStmt] ...; # 111| 0: [MethodCall] call to method StringGenericM1 # 111| -1: [TypeAccess] access to type MyExtensions # 111| 0: [TypeMention] MyExtensions # 111| 0: [LocalVariableAccess] access to local variable s # 111| 1: [StringLiteralUtf16] "test" # 111| 2: [ObjectCreation] object creation of type Object # 111| 0: [TypeMention] object