UFile (package = ) [public class WhileWithReturn {...]
    UClass (name = WhileWithReturn) [public class WhileWithReturn {...}]
        UMethod (name = foo) [public static fun foo() : int {...}]
            UBlockExpression [{...}] = Nothing
                UDeclarationsExpression [var first: int = 1] = Undetermined
                    ULocalVariable (name = first) [var first: int = 1]
                        ULiteralExpression (value = 1) [1] = 1
                UDeclarationsExpression [var second: int = 2] = Undetermined
                    ULocalVariable (name = second) [var second: int = 2]
                        ULiteralExpression (value = 2) [2] = 2
                UWhileExpression [while (first === 1) {...}] = Nothing
                    UBinaryExpression (operator = ===) [first === 1] = true (depending on: (var first = 1))
                        USimpleNameReferenceExpression (identifier = first) [first] = (var first = 1)
                        ULiteralExpression (value = 1) [1] = 1
                    UBlockExpression [{...}] = Nothing
                        UBinaryExpression (operator = =) [second = 3] = 3
                            USimpleNameReferenceExpression (identifier = second) [second] = (var second = 2)
                            ULiteralExpression (value = 3) [3] = 3
                        UIfExpression [if (first > 0) return second] = Nothing
                            UBinaryExpression (operator = >) [first > 0] = true (depending on: (var first = 1))
                                USimpleNameReferenceExpression (identifier = first) [first] = (var first = 1)
                                ULiteralExpression (value = 0) [0] = 0
                            UReturnExpression [return second] = Nothing
                                USimpleNameReferenceExpression (identifier = second) [second] = (var second = 3)
                            UastEmptyExpression [UastEmptyExpression] = Undetermined
                UReturnExpression [return second] = Nothing
                    USimpleNameReferenceExpression (identifier = second) [second] = Undetermined
