UFile (package = ) [public class Shift {...]
    UClass (name = Shift) [public class Shift {...}]
        UMethod (name = foo) [public static fun foo() : int {...}]
            UBlockExpression [{...}] = Nothing
                UDeclarationsExpression [var one: int = 1] = Undetermined
                    ULocalVariable (name = one) [var one: int = 1]
                        ULiteralExpression (value = 1) [1] = 1
                UDeclarationsExpression [var two: int = one << 1] = Undetermined
                    ULocalVariable (name = two) [var two: int = one << 1]
                        UBinaryExpression (operator = <<) [one << 1] = 2 (depending on: (var one = 1))
                            USimpleNameReferenceExpression (identifier = one) [one] = (var one = 1)
                            ULiteralExpression (value = 1) [1] = 1
                UDeclarationsExpression [var sixteen: int = two << 3] = Undetermined
                    ULocalVariable (name = sixteen) [var sixteen: int = two << 3]
                        UBinaryExpression (operator = <<) [two << 3] = 16 (depending on: (var two = 2 (depending on: (var one = 1))))
                            USimpleNameReferenceExpression (identifier = two) [two] = (var two = 2 (depending on: (var one = 1)))
                            ULiteralExpression (value = 3) [3] = 3
                UDeclarationsExpression [var minInt: int = -2147483648] = Undetermined
                    ULocalVariable (name = minInt) [var minInt: int = -2147483648]
                        ULiteralExpression (value = -2147483648) [-2147483648] = -2147483648
                UDeclarationsExpression [var quarter: int = minInt >> 2] = Undetermined
                    ULocalVariable (name = quarter) [var quarter: int = minInt >> 2]
                        UBinaryExpression (operator = >>) [minInt >> 2] = -536870912 (depending on: (var minInt = -2147483648))
                            USimpleNameReferenceExpression (identifier = minInt) [minInt] = (var minInt = -2147483648)
                            ULiteralExpression (value = 2) [2] = 2
                UDeclarationsExpression [var unsignedQuarter: int = minInt >>> 2] = Undetermined
                    ULocalVariable (name = unsignedQuarter) [var unsignedQuarter: int = minInt >>> 2]
                        UBinaryExpression (operator = >>>) [minInt >>> 2] = 536870912 (depending on: (var minInt = -2147483648))
                            USimpleNameReferenceExpression (identifier = minInt) [minInt] = (var minInt = -2147483648)
                            ULiteralExpression (value = 2) [2] = 2
                UReturnExpression [return sixteen + quarter + unsignedQuarter] = Nothing
                    UPolyadicExpression (operator = +) [sixteen + quarter + unsignedQuarter] = 16 (depending on: (var sixteen = 16 (depending on: (var two = 2 (depending on: (var one = 1))))), (var quarter = -536870912 (depending on: (var minInt = -2147483648))), (var unsignedQuarter = 536870912 (depending on: (var minInt = -2147483648))))
                        USimpleNameReferenceExpression (identifier = sixteen) [sixteen] = (var sixteen = 16 (depending on: (var two = 2 (depending on: (var one = 1)))))
                        USimpleNameReferenceExpression (identifier = quarter) [quarter] = (var quarter = -536870912 (depending on: (var minInt = -2147483648)))
                        USimpleNameReferenceExpression (identifier = unsignedQuarter) [unsignedQuarter] = (var unsignedQuarter = 536870912 (depending on: (var minInt = -2147483648)))
        UMethod (name = bar) [public static fun bar() : long {...}]
            UBlockExpression [{...}] = Nothing
                UDeclarationsExpression [var one: long = 1] = Undetermined
                    ULocalVariable (name = one) [var one: long = 1]
                        ULiteralExpression (value = 1) [1] = (long)1
                UDeclarationsExpression [var two: long = one << 1] = Undetermined
                    ULocalVariable (name = two) [var two: long = one << 1]
                        UBinaryExpression (operator = <<) [one << 1] = (long)2 (depending on: (var one = (long)1))
                            USimpleNameReferenceExpression (identifier = one) [one] = (var one = (long)1)
                            ULiteralExpression (value = 1) [1] = 1
                UDeclarationsExpression [var large: long = two << 61] = Undetermined
                    ULocalVariable (name = large) [var large: long = two << 61]
                        UBinaryExpression (operator = <<) [two << 61] = (long)4611686018427387904 (depending on: (var two = (long)2 (depending on: (var one = (long)1))))
                            USimpleNameReferenceExpression (identifier = two) [two] = (var two = (long)2 (depending on: (var one = (long)1)))
                            ULiteralExpression (value = 61) [61] = 61
                UDeclarationsExpression [var minLong: long = -9223372036854775808] = Undetermined
                    ULocalVariable (name = minLong) [var minLong: long = -9223372036854775808]
                        ULiteralExpression (value = -9223372036854775808) [-9223372036854775808] = (long)-9223372036854775808
                UDeclarationsExpression [var eighth: long = minLong >> 3] = Undetermined
                    ULocalVariable (name = eighth) [var eighth: long = minLong >> 3]
                        UBinaryExpression (operator = >>) [minLong >> 3] = (long)-1152921504606846976 (depending on: (var minLong = (long)-9223372036854775808))
                            USimpleNameReferenceExpression (identifier = minLong) [minLong] = (var minLong = (long)-9223372036854775808)
                            ULiteralExpression (value = 3) [3] = 3
                UDeclarationsExpression [var unsignedEighth: long = minLong >>> 3] = Undetermined
                    ULocalVariable (name = unsignedEighth) [var unsignedEighth: long = minLong >>> 3]
                        UBinaryExpression (operator = >>>) [minLong >>> 3] = (long)1152921504606846976 (depending on: (var minLong = (long)-9223372036854775808))
                            USimpleNameReferenceExpression (identifier = minLong) [minLong] = (var minLong = (long)-9223372036854775808)
                            ULiteralExpression (value = 3) [3] = 3
                UReturnExpression [return large + eighth + unsignedEighth] = Nothing
                    UPolyadicExpression (operator = +) [large + eighth + unsignedEighth] = (long)4611686018427387904 (depending on: (var large = (long)4611686018427387904 (depending on: (var two = (long)2 (depending on: (var one = (long)1))))), (var eighth = (long)-1152921504606846976 (depending on: (var minLong = (long)-9223372036854775808))), (var unsignedEighth = (long)1152921504606846976 (depending on: (var minLong = (long)-9223372036854775808))))
                        USimpleNameReferenceExpression (identifier = large) [large] = (var large = (long)4611686018427387904 (depending on: (var two = (long)2 (depending on: (var one = (long)1)))))
                        USimpleNameReferenceExpression (identifier = eighth) [eighth] = (var eighth = (long)-1152921504606846976 (depending on: (var minLong = (long)-9223372036854775808)))
                        USimpleNameReferenceExpression (identifier = unsignedEighth) [unsignedEighth] = (var unsignedEighth = (long)1152921504606846976 (depending on: (var minLong = (long)-9223372036854775808)))
