.method main
.args   1
.define OBJREF = 42

         bipush OBJREF		// stack = 42 
         bipush 1		// stack = 1, 42
         bipush 0		// stack = 0, 1, 42
         iushr			// stack = 0, 42
         pop			// stack = 42
	 bipush 1		// stack = 1, 42
         bipush 1		// stack = 1, 1, 42
         iushr			// stack = 0, 42
         pop			// stack = 42
	 bipush 2		// stack = 2, 42
         bipush 4		// stack = 4, 2, 42
         iushr			// stack = 1, 42
	 pop			// stack = 42
         bipush 31		// stack = 31, 42
				// 2^31-1 = 2147483647
	 ldc_w  2147483647	// stack = 2147483647, 31, 42
         iushr			// stack = 0, 42
	 pop			// stack = 42
         bipush 33		// stack = 33, 42
         bipush 32		// stack = 32, 33, 42
         iushr			// stack = 16, 42
	 pop			// stack = 42
         bipush 2		// stack = 2, 42
         bipush -4		// stack = -4, 2, 42
				// 2^30-1 = 1073741823
	 iushr			// stack = 1073741823, 42
	 pop			// stack = 42
         bipush 3		// stack = 3, 42
         bipush -17		// stack = -17, 3, 42
         iushr			// stack = 536870909, 42
	 pop			// stack = 42
         bipush 12		// stack = 12, 42
				// -2^31 = -2147483648
	 ldc_w  -2147483648	// stack = -2147483648, 12, 42
         iushr			// stack = 524288, 42
	 pop			// stack = 42
         bipush 24		// stack = 24, 42
         bipush -3		// stack = -3, 24, 42
         iushr			// stack = 255, 42
	 pop			// stack = 42
         bipush -3		// stack = -3, 42
         bipush 20		// stack = 20, -3, 42
         iushr			// stack = 0, 42
	 pop			// stack = 42
	 bipush 5		// stack = 5, 42
         ldc_w  -257		// stack = -257, 5, 42
         iushr			// stack = 134217719, 42
	 pop			// stack = 42
	 bipush 3		// stack = 3, 42
				// -2^31 = -2147483648
	 ldc_w -2147483648	// stack = -2147483648, 3, 42
                                // 2^28 = 268435456  
         iushr			// stack = 268435456, 42
	 pop			// stack = 42
         bipush 0		// stack = 0, 42
         ireturn		// return 0

