UFile (package = ) [public class Strings {...]
    UClass (name = Strings) [public class Strings {...}]
        UMethod (name = foo) [public static fun foo() : java.lang.String {...}]
            UBlockExpression [{...}] = Nothing
                UDeclarationsExpression [var s1: java.lang.String = "Hello "] = Undetermined
                    ULocalVariable (name = s1) [var s1: java.lang.String = "Hello "]
                        ULiteralExpression (value = "Hello ") ["Hello "] = "Hello "
                UDeclarationsExpression [var s2: java.lang.String = s1 + "wounderful"] = Undetermined
                    ULocalVariable (name = s2) [var s2: java.lang.String = s1 + "wounderful"]
                        UBinaryExpression (operator = +) [s1 + "wounderful"] = "Hello wounderful" (depending on: (var s1 = "Hello "))
                            USimpleNameReferenceExpression (identifier = s1) [s1] = (var s1 = "Hello ")
                            ULiteralExpression (value = "wounderful") ["wounderful"] = "wounderful"
                UDeclarationsExpression [var s3: java.lang.String = " world "] = Undetermined
                    ULocalVariable (name = s3) [var s3: java.lang.String = " world "]
                        ULiteralExpression (value = " world ") [" world "] = " world "
                UDeclarationsExpression [var s4: java.lang.String = s2 + s3] = Undetermined
                    ULocalVariable (name = s4) [var s4: java.lang.String = s2 + s3]
                        UBinaryExpression (operator = +) [s2 + s3] = "Hello wounderful world " (depending on: (var s2 = "Hello wounderful" (depending on: (var s1 = "Hello "))), (var s3 = " world "))
                            USimpleNameReferenceExpression (identifier = s2) [s2] = (var s2 = "Hello wounderful" (depending on: (var s1 = "Hello ")))
                            USimpleNameReferenceExpression (identifier = s3) [s3] = (var s3 = " world ")
                UDeclarationsExpression [var s5: java.lang.String = s4 + 2016] = Undetermined
                    ULocalVariable (name = s5) [var s5: java.lang.String = s4 + 2016]
                        UBinaryExpression (operator = +) [s4 + 2016] = "Hello wounderful world 2016" (depending on: (var s4 = "Hello wounderful world " (depending on: (var s2 = "Hello wounderful" (depending on: (var s1 = "Hello "))), (var s3 = " world "))))
                            USimpleNameReferenceExpression (identifier = s4) [s4] = (var s4 = "Hello wounderful world " (depending on: (var s2 = "Hello wounderful" (depending on: (var s1 = "Hello "))), (var s3 = " world ")))
                            ULiteralExpression (value = 2016) [2016] = 2016
                UDeclarationsExpression [var empty: java.lang.String = ""] = Undetermined
                    ULocalVariable (name = empty) [var empty: java.lang.String = ""]
                        ULiteralExpression (value = "") [""] = ""
                UReturnExpression [return s5] = Nothing
                    USimpleNameReferenceExpression (identifier = s5) [s5] = (var s5 = "Hello wounderful world 2016" (depending on: (var s4 = "Hello wounderful world " (depending on: (var s2 = "Hello wounderful" (depending on: (var s1 = "Hello "))), (var s3 = " world ")))))
