UFile (package = ) [public final class ReifiedReturnTypeKt {...]
    UClass (name = ReifiedReturnTypeKt) [public final class ReifiedReturnTypeKt {...}]
        UMethod (name = function1) [public static final fun function1(@org.jetbrains.annotations.Nullable t: T, @org.jetbrains.annotations.NotNull i: int, @org.jetbrains.annotations.NotNull s: java.lang.String) : void {...}]
            UParameter (name = t) [@org.jetbrains.annotations.Nullable var t: T]
                UAnnotation (fqName = org.jetbrains.annotations.Nullable) [@org.jetbrains.annotations.Nullable]
            UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = s) [@org.jetbrains.annotations.NotNull var s: java.lang.String]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}] : PsiType:void
        UMethod (name = function2) [public static final fun function2(@org.jetbrains.annotations.Nullable t: T, @org.jetbrains.annotations.NotNull i: int, @org.jetbrains.annotations.NotNull s: java.lang.String) : T {...}]
            UParameter (name = t) [@org.jetbrains.annotations.Nullable var t: T]
                UAnnotation (fqName = org.jetbrains.annotations.Nullable) [@org.jetbrains.annotations.Nullable]
            UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = s) [@org.jetbrains.annotations.NotNull var s: java.lang.String]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}]
                UReturnExpression [return t]
                    USimpleNameReferenceExpression (identifier = t) [t] : PsiType:T
        UMethod (name = function2CharSequence) [public static final fun function2CharSequence(@org.jetbrains.annotations.NotNull t: T, @org.jetbrains.annotations.NotNull i: int, @org.jetbrains.annotations.NotNull s: java.lang.String) : T {...}]
            UParameter (name = t) [@org.jetbrains.annotations.NotNull var t: T]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = s) [@org.jetbrains.annotations.NotNull var s: java.lang.String]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}]
                UReturnExpression [return t]
                    USimpleNameReferenceExpression (identifier = t) [t] : PsiType:T
        UMethod (name = copyWhenGreater) [public static final fun copyWhenGreater(@org.jetbrains.annotations.NotNull list: java.util.List<? extends T>, @org.jetbrains.annotations.NotNull threshold: T, @org.jetbrains.annotations.NotNull threshold2: B) : B {...}]
            UParameter (name = list) [@org.jetbrains.annotations.NotNull var list: java.util.List<? extends T>]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = threshold) [@org.jetbrains.annotations.NotNull var threshold: T]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = threshold2) [@org.jetbrains.annotations.NotNull var threshold2: B]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}] : PsiType:Void
                UReturnExpression [return threshold2] : PsiType:Void
                    USimpleNameReferenceExpression (identifier = threshold2) [threshold2] : PsiType:B
        UMethod (name = function3) [static fun function3(@org.jetbrains.annotations.Nullable t: T, @org.jetbrains.annotations.NotNull i: int, @org.jetbrains.annotations.NotNull s: java.lang.String) : void {...}]
            UParameter (name = t) [@org.jetbrains.annotations.Nullable var t: T]
                UAnnotation (fqName = org.jetbrains.annotations.Nullable) [@org.jetbrains.annotations.Nullable]
            UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = s) [@org.jetbrains.annotations.NotNull var s: java.lang.String]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}] : PsiType:void
        UMethod (name = function4) [static fun function4(@org.jetbrains.annotations.Nullable t: T, @org.jetbrains.annotations.NotNull i: int, @org.jetbrains.annotations.NotNull s: java.lang.String) : T {...}]
            UParameter (name = t) [@org.jetbrains.annotations.Nullable var t: T]
                UAnnotation (fqName = org.jetbrains.annotations.Nullable) [@org.jetbrains.annotations.Nullable]
            UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = s) [@org.jetbrains.annotations.NotNull var s: java.lang.String]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}]
                UReturnExpression [return t]
                    USimpleNameReferenceExpression (identifier = t) [t] : PsiType:T
        UMethod (name = function5) [static fun function5(@org.jetbrains.annotations.Nullable t: T, @org.jetbrains.annotations.NotNull i: int, @org.jetbrains.annotations.NotNull s: java.lang.String) : int {...}]
            UParameter (name = t) [@org.jetbrains.annotations.Nullable var t: T]
                UAnnotation (fqName = org.jetbrains.annotations.Nullable) [@org.jetbrains.annotations.Nullable]
            UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = s) [@org.jetbrains.annotations.NotNull var s: java.lang.String]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}]
                UReturnExpression [return 42]
                    ULiteralExpression (value = 42) [42] : PsiType:int
        UMethod (name = function6) [static fun function6(@org.jetbrains.annotations.Nullable $this$function6: T, @org.jetbrains.annotations.Nullable t: T, @org.jetbrains.annotations.NotNull i: int, @org.jetbrains.annotations.NotNull s: java.lang.String) : T {...}]
            UParameter (name = $this$function6) [@org.jetbrains.annotations.Nullable var $this$function6: T]
                UAnnotation (fqName = org.jetbrains.annotations.Nullable) [@org.jetbrains.annotations.Nullable]
            UParameter (name = t) [@org.jetbrains.annotations.Nullable var t: T]
                UAnnotation (fqName = org.jetbrains.annotations.Nullable) [@org.jetbrains.annotations.Nullable]
            UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = s) [@org.jetbrains.annotations.NotNull var s: java.lang.String]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}]
                UReturnExpression [return t]
                    USimpleNameReferenceExpression (identifier = t) [t] : PsiType:T
        UMethod (name = function7) [static fun function7(@org.jetbrains.annotations.Nullable t: T, @org.jetbrains.annotations.NotNull i: int, @org.jetbrains.annotations.NotNull s: java.lang.String) : T {...}]
            UParameter (name = t) [@org.jetbrains.annotations.Nullable var t: T]
                UAnnotation (fqName = org.jetbrains.annotations.Nullable) [@org.jetbrains.annotations.Nullable]
            UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = s) [@org.jetbrains.annotations.NotNull var s: java.lang.String]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}]
                UReturnExpression [return t]
                    USimpleNameReferenceExpression (identifier = t) [t] : PsiType:T
        UMethod (name = function8) [static fun function8(@org.jetbrains.annotations.Nullable t: T, @org.jetbrains.annotations.NotNull i: int, @org.jetbrains.annotations.NotNull s: java.lang.String) : T {...}]
            UParameter (name = t) [@org.jetbrains.annotations.Nullable var t: T]
                UAnnotation (fqName = org.jetbrains.annotations.Nullable) [@org.jetbrains.annotations.Nullable]
            UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = s) [@org.jetbrains.annotations.NotNull var s: java.lang.String]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}]
                UReturnExpression [return t]
                    USimpleNameReferenceExpression (identifier = t) [t] : PsiType:T
        UMethod (name = function9) [static fun function9(@org.jetbrains.annotations.Nullable t: T, @org.jetbrains.annotations.NotNull i: int, @org.jetbrains.annotations.NotNull s: java.lang.String) : T {...}]
            UParameter (name = t) [@org.jetbrains.annotations.Nullable var t: T]
                UAnnotation (fqName = org.jetbrains.annotations.Nullable) [@org.jetbrains.annotations.Nullable]
            UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = s) [@org.jetbrains.annotations.NotNull var s: java.lang.String]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}]
                UReturnExpression [return t]
                    USimpleNameReferenceExpression (identifier = t) [t] : PsiType:T
        UMethod (name = function10) [static fun function10(@org.jetbrains.annotations.Nullable t: T, @org.jetbrains.annotations.NotNull i: int, @org.jetbrains.annotations.NotNull s: java.lang.String) : T {...}]
            UParameter (name = t) [@org.jetbrains.annotations.Nullable var t: T]
                UAnnotation (fqName = org.jetbrains.annotations.Nullable) [@org.jetbrains.annotations.Nullable]
            UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = s) [@org.jetbrains.annotations.NotNull var s: java.lang.String]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}]
                UReturnExpression [return t]
                    USimpleNameReferenceExpression (identifier = t) [t] : PsiType:T
        UMethod (name = function11) [static fun function11(@org.jetbrains.annotations.Nullable $this$function11: T, @org.jetbrains.annotations.Nullable t: T, @org.jetbrains.annotations.NotNull i: int, @org.jetbrains.annotations.NotNull s: java.lang.String) : T {...}]
            UParameter (name = $this$function11) [@org.jetbrains.annotations.Nullable var $this$function11: T]
                UAnnotation (fqName = org.jetbrains.annotations.Nullable) [@org.jetbrains.annotations.Nullable]
            UParameter (name = t) [@org.jetbrains.annotations.Nullable var t: T]
                UAnnotation (fqName = org.jetbrains.annotations.Nullable) [@org.jetbrains.annotations.Nullable]
            UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = s) [@org.jetbrains.annotations.NotNull var s: java.lang.String]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}]
                UReturnExpression [return t]
                    USimpleNameReferenceExpression (identifier = t) [t] : PsiType:T
        UMethod (name = function11CharSequence) [static fun function11CharSequence(@org.jetbrains.annotations.NotNull $this$function11CharSequence: T, @org.jetbrains.annotations.NotNull t: T, @org.jetbrains.annotations.NotNull i: int, @org.jetbrains.annotations.NotNull s: java.lang.String) : T {...}]
            UParameter (name = $this$function11CharSequence) [@org.jetbrains.annotations.NotNull var $this$function11CharSequence: T]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = t) [@org.jetbrains.annotations.NotNull var t: T]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: int]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = s) [@org.jetbrains.annotations.NotNull var s: java.lang.String]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}]
                UReturnExpression [return t]
                    USimpleNameReferenceExpression (identifier = t) [t] : PsiType:T
        UMethod (name = function12CharSequence) [static fun function12CharSequence(@org.jetbrains.annotations.NotNull $this$function12CharSequence: T, @org.jetbrains.annotations.NotNull t: B, @org.jetbrains.annotations.NotNull i: T, @org.jetbrains.annotations.NotNull s: java.lang.String) : B {...}]
            UParameter (name = $this$function12CharSequence) [@org.jetbrains.annotations.NotNull var $this$function12CharSequence: T]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = t) [@org.jetbrains.annotations.NotNull var t: B]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = i) [@org.jetbrains.annotations.NotNull var i: T]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UParameter (name = s) [@org.jetbrains.annotations.NotNull var s: java.lang.String]
                UAnnotation (fqName = org.jetbrains.annotations.NotNull) [@org.jetbrains.annotations.NotNull]
            UBlockExpression [{...}]
                UReturnExpression [return t]
                    USimpleNameReferenceExpression (identifier = t) [t] : PsiType:B
    UClass (name = Foo) [public final class Foo {...}]
        UMethod (name = Foo) [public fun Foo() = UastEmptyExpression]
        UMethod (name = foo) [fun foo() : Z {...}]
            UBlockExpression [{...}] : PsiType:Void
                UCallExpression (kind = UastCallKind(name='method_call'), argCount = 0)) [TODO()] : PsiType:Void
                    UIdentifier (Identifier (TODO)) [UIdentifier (Identifier (TODO))]
                    USimpleNameReferenceExpression (identifier = TODO, resolvesTo = null) [TODO] : PsiType:Void
