UFile (package = ) [public final class WithGenericKt {...]
    UClass (name = WithGenericKt) [public final class WithGenericKt {...}]
        UMethod (name = test1) [public static final fun test1() : T {...}]
            UBlockExpression [{...}]
                UReturnExpression [return null as T]
                    UBinaryExpressionWithType [null as T] : PsiType:T
                        ULiteralExpression (value = null) [null] : PsiType:Void
                        UTypeReferenceExpression (name = T) [T]
        UMethod (name = test2) [public static final fun test2() : T {...}]
            UBlockExpression [{...}] : PsiType:Void
                [!] UnknownKotlinExpression (PROPERTY) [[!] UnknownKotlinExpression (PROPERTY)]
                UReturnExpression [return a as T] : PsiType:Void
                    UBinaryExpressionWithType [a as T] : PsiType:T
                        USimpleNameReferenceExpression (identifier = a) [a] : PsiType:Object
                        UTypeReferenceExpression (name = T) [T]
        UMethod (name = test3) [public static final fun test3() : T {...}]
            UBlockExpression [{...}]
                UReturnExpression [return null as T]
                    UBinaryExpressionWithType [null as T] : PsiType:T
                        ULiteralExpression (value = null) [null] : PsiType:Void
                        UTypeReferenceExpression (name = T) [T]
        UMethod (name = castToString) [public static final fun castToString(t: T) : void {...}]
            UParameter (name = t) [var t: T]
            UBlockExpression [{...}] : PsiType:String
                UBinaryExpressionWithType [t as java.lang.String] : PsiType:String
                    USimpleNameReferenceExpression (identifier = t) [t] : PsiType:T
                    UTypeReferenceExpression (name = java.lang.String) [java.lang.String]
        UMethod (name = box) [public static final fun box() : java.lang.String {...}]
            UBlockExpression [{...}] : PsiType:Void
                UIfExpression [if ([!] UnknownKotlinExpression (BINARY_EXPRESSION)) return "fail: test1"] : PsiType:Unit
                    [!] UnknownKotlinExpression (BINARY_EXPRESSION) [[!] UnknownKotlinExpression (BINARY_EXPRESSION)]
                    UReturnExpression [return "fail: test1"] : PsiType:Void
                        ULiteralExpression (value = "fail: test1") ["fail: test1"] : PsiType:String
                UIfExpression [if ([!] UnknownKotlinExpression (BINARY_EXPRESSION)) return "fail: test2"] : PsiType:Unit
                    [!] UnknownKotlinExpression (BINARY_EXPRESSION) [[!] UnknownKotlinExpression (BINARY_EXPRESSION)]
                    UReturnExpression [return "fail: test2"] : PsiType:Void
                        ULiteralExpression (value = "fail: test2") ["fail: test2"] : PsiType:String
                [!] UnknownKotlinExpression (PROPERTY) [[!] UnknownKotlinExpression (PROPERTY)]
                [!] UnknownKotlinExpression (TRY) [[!] UnknownKotlinExpression (TRY)]
                UIfExpression [if ([!] UnknownKotlinExpression (BINARY_EXPRESSION)) return "fail: test3"] : PsiType:Unit
                    [!] UnknownKotlinExpression (BINARY_EXPRESSION) [[!] UnknownKotlinExpression (BINARY_EXPRESSION)]
                    UReturnExpression [return "fail: test3"] : PsiType:Void
                        ULiteralExpression (value = "fail: test3") ["fail: test3"] : PsiType:String
                [!] UnknownKotlinExpression (TRY) [[!] UnknownKotlinExpression (TRY)]
                UReturnExpression [return "Fail"] : PsiType:Void
                    ULiteralExpression (value = "Fail") ["Fail"] : PsiType:String
