UFile (package = ) [import java.lang.Runnable...]
    UImportStatement (isOnDemand = false) [import java.lang.Runnable]
    UClass (name = TypeCastKt) [public final class TypeCastKt {...}]
        UMethod (name = stringConsumer) [public static final fun stringConsumer(s: java.lang.String) : void {...}]
            UParameter (name = s) [var s: java.lang.String]
            UBlockExpression [{...}] : PsiType:Unit
        UMethod (name = foo) [public static final fun foo(x: java.lang.Object, isSafe: boolean) : java.lang.Runnable {...}]
            UParameter (name = x) [var x: java.lang.Object]
            UParameter (name = isSafe) [var isSafe: boolean]
            UBlockExpression [{...}]
                UReturnExpression [return if (isSafe) x as java.lang.Runnable else x as? java.lang.Runnable]
                    UIfExpression [if (isSafe) x as java.lang.Runnable else x as? java.lang.Runnable] : PsiType:Runnable
                        USimpleNameReferenceExpression (identifier = isSafe) [isSafe] : PsiType:boolean
                        UBinaryExpressionWithType [x as java.lang.Runnable] : PsiType:Runnable
                            USimpleNameReferenceExpression (identifier = x) [x] : PsiType:Object
                            UTypeReferenceExpression (name = java.lang.Runnable) [java.lang.Runnable]
                        UBinaryExpressionWithType [x as? java.lang.Runnable] : PsiType:Runnable
                            USimpleNameReferenceExpression (identifier = x) [x] : PsiType:Object
                            UTypeReferenceExpression (name = java.lang.Runnable) [java.lang.Runnable]
        UMethod (name = box) [public static final fun box() : java.lang.String {...}]
            UBlockExpression [{...}] : PsiType:Void
                [!] UnknownKotlinExpression (PROPERTY) [[!] UnknownKotlinExpression (PROPERTY)]
                UIfExpression [if ([!] UnknownKotlinExpression (BINARY_EXPRESSION)) return "Fail: " + x] : PsiType:Unit
                    [!] UnknownKotlinExpression (BINARY_EXPRESSION) [[!] UnknownKotlinExpression (BINARY_EXPRESSION)]
                    UReturnExpression [return "Fail: " + x] : PsiType:Void
                        UPolyadicExpression (operator = +) ["Fail: " + x] : PsiType:String
                            ULiteralExpression (value = "Fail: ") ["Fail: "] : PsiType:String
                            USimpleNameReferenceExpression (identifier = x) [x] : PsiType:Object
                [!] UnknownKotlinExpression (PROPERTY) [[!] UnknownKotlinExpression (PROPERTY)]
                UIfExpression [if ([!] UnknownKotlinExpression (BINARY_EXPRESSION)) return "Fail: " + y] : PsiType:Unit
                    [!] UnknownKotlinExpression (BINARY_EXPRESSION) [[!] UnknownKotlinExpression (BINARY_EXPRESSION)]
                    UReturnExpression [return "Fail: " + y] : PsiType:Void
                        UPolyadicExpression (operator = +) ["Fail: " + y] : PsiType:String
                            ULiteralExpression (value = "Fail: ") ["Fail: "] : PsiType:String
                            USimpleNameReferenceExpression (identifier = y) [y] : PsiType:Object
                [!] UnknownKotlinExpression (PROPERTY) [[!] UnknownKotlinExpression (PROPERTY)]
                UIfExpression [if ([!] UnknownKotlinExpression (BINARY_EXPRESSION)) return "Fail: " + r] : PsiType:Unit
                    [!] UnknownKotlinExpression (BINARY_EXPRESSION) [[!] UnknownKotlinExpression (BINARY_EXPRESSION)]
                    UReturnExpression [return "Fail: " + r] : PsiType:Void
                        UPolyadicExpression (operator = +) ["Fail: " + r] : PsiType:String
                            ULiteralExpression (value = "Fail: ") ["Fail: "] : PsiType:String
                            USimpleNameReferenceExpression (identifier = r) [r] : PsiType:Object
                UIfExpression [if ([!] UnknownKotlinExpression (BINARY_EXPRESSION)) return "Fail: " + r] : PsiType:Unit
                    [!] UnknownKotlinExpression (BINARY_EXPRESSION) [[!] UnknownKotlinExpression (BINARY_EXPRESSION)]
                    UReturnExpression [return "Fail: " + r] : PsiType:Void
                        UPolyadicExpression (operator = +) ["Fail: " + r] : PsiType:String
                            ULiteralExpression (value = "Fail: ") ["Fail: "] : PsiType:String
                            USimpleNameReferenceExpression (identifier = r) [r] : PsiType:Object
                UReturnExpression [return "OK"] : PsiType:Void
                    ULiteralExpression (value = "OK") ["OK"] : PsiType:String
