UFile (package = ) [public class IdentityEquals {...]
    UClass (name = IdentityEquals) [public class IdentityEquals {...}]
        UMethod (name = foo) [public static fun foo() : boolean {...}]
            UBlockExpression [{...}] = Nothing
                UDeclarationsExpression [var i1: java.lang.Integer = 111] = Undetermined
                    ULocalVariable (name = i1) [var i1: java.lang.Integer = 111]
                        ULiteralExpression (value = 111) [111] = 111
                UDeclarationsExpression [var i2: java.lang.Integer = 222] = Undetermined
                    ULocalVariable (name = i2) [var i2: java.lang.Integer = 222]
                        ULiteralExpression (value = 222) [222] = 222
                UDeclarationsExpression [var i12: java.lang.Integer = i1 + i2] = Undetermined
                    ULocalVariable (name = i12) [var i12: java.lang.Integer = i1 + i2]
                        UBinaryExpression (operator = +) [i1 + i2] = 333 (depending on: (var i1 = 111), (var i2 = 222))
                            USimpleNameReferenceExpression (identifier = i1) [i1] = (var i1 = 111)
                            USimpleNameReferenceExpression (identifier = i2) [i2] = (var i2 = 222)
                UDeclarationsExpression [var i21: java.lang.Integer = i2 + i1] = Undetermined
                    ULocalVariable (name = i21) [var i21: java.lang.Integer = i2 + i1]
                        UBinaryExpression (operator = +) [i2 + i1] = 333 (depending on: (var i2 = 222), (var i1 = 111))
                            USimpleNameReferenceExpression (identifier = i2) [i2] = (var i2 = 222)
                            USimpleNameReferenceExpression (identifier = i1) [i1] = (var i1 = 111)
                UReturnExpression [return i12 === i21] = Nothing
                    UBinaryExpression (operator = ===) [i12 === i21] = Undetermined
                        USimpleNameReferenceExpression (identifier = i12) [i12] = (var i12 = 333 (depending on: (var i1 = 111), (var i2 = 222)))
                        USimpleNameReferenceExpression (identifier = i21) [i21] = (var i21 = 333 (depending on: (var i2 = 222), (var i1 = 111)))
        UMethod (name = bar) [public static fun bar() : boolean {...}]
            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 + s1] = Undetermined
                    ULocalVariable (name = s2) [var s2: java.lang.String = s1 + s1]
                        UBinaryExpression (operator = +) [s1 + s1] = "hellohello" (depending on: (var s1 = "hello"))
                            USimpleNameReferenceExpression (identifier = s1) [s1] = (var s1 = "hello")
                            USimpleNameReferenceExpression (identifier = s1) [s1] = (var s1 = "hello")
                UDeclarationsExpression [var s3: java.lang.String = "hellohello"] = Undetermined
                    ULocalVariable (name = s3) [var s3: java.lang.String = "hellohello"]
                        ULiteralExpression (value = "hellohello") ["hellohello"] = "hellohello"
                UReturnExpression [return s2 === s3] = Nothing
                    UBinaryExpression (operator = ===) [s2 === s3] = Undetermined
                        USimpleNameReferenceExpression (identifier = s2) [s2] = (var s2 = "hellohello" (depending on: (var s1 = "hello")))
                        USimpleNameReferenceExpression (identifier = s3) [s3] = (var s3 = "hellohello")
