UFile (package = ) [public class Modification {...]
    UClass (name = Modification) [public class Modification {...}]
        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 "
                UBinaryExpression (operator = +=) [s1 += "world"] = "Hello world" (depending on: (var s1 = "Hello "))
                    USimpleNameReferenceExpression (identifier = s1) [s1] = (var s1 = "Hello ")
                    ULiteralExpression (value = "world") ["world"] = "world"
                UDeclarationsExpression [var m: int = 10] = Undetermined
                    ULocalVariable (name = m) [var m: int = 10]
                        ULiteralExpression (value = 10) [10] = 10
                UDeclarationsExpression [var n: int = 5] = Undetermined
                    ULocalVariable (name = n) [var n: int = 5]
                        ULiteralExpression (value = 5) [5] = 5
                UBinaryExpression (operator = +=) [m += n -= 3] = 12 (depending on: (var m = 10), (var n = 5))
                    USimpleNameReferenceExpression (identifier = m) [m] = (var m = 10)
                    UBinaryExpression (operator = -=) [n -= 3] = 2 (depending on: (var n = 5))
                        USimpleNameReferenceExpression (identifier = n) [n] = (var n = 5)
                        ULiteralExpression (value = 3) [3] = 3
                UBinaryExpression (operator = /=) [m /= n *= 2] = 3 (depending on: (var m = 12 (depending on: (var n = 5))), (var n = 2))
                    USimpleNameReferenceExpression (identifier = m) [m] = (var m = 12 (depending on: (var n = 5)))
                    UBinaryExpression (operator = *=) [n *= 2] = 4 (depending on: (var n = 2))
                        USimpleNameReferenceExpression (identifier = n) [n] = (var n = 2)
                        ULiteralExpression (value = 2) [2] = 2
                UBinaryExpression (operator = +=) [s1 += " = "] = "Hello world = " (depending on: (var s1 = "Hello world"))
                    USimpleNameReferenceExpression (identifier = s1) [s1] = (var s1 = "Hello world")
                    ULiteralExpression (value = " = ") [" = "] = " = "
                UReturnExpression [return s1 + m + " / " + n] = Nothing
                    UPolyadicExpression (operator = +) [s1 + m + " / " + n] = "Hello world = 3 / 4" (depending on: (var s1 = "Hello world = "), (var m = 3 (depending on: (var n = 2))), (var n = 4))
                        USimpleNameReferenceExpression (identifier = s1) [s1] = (var s1 = "Hello world = ")
                        USimpleNameReferenceExpression (identifier = m) [m] = (var m = 3 (depending on: (var n = 2)))
                        ULiteralExpression (value = " / ") [" / "] = " / "
                        USimpleNameReferenceExpression (identifier = n) [n] = (var n = 4)
