1.class public LOK;
2
3.super Ljava/lang/Object;
4
5.method public static run(Ljava/lang/Object;Ljava/lang/Object;)V
6   .registers 3
7
8   invoke-static {v1, v2}, LOK;->runNoMonitors(Ljava/lang/Object;Ljava/lang/Object;)V
9
10   invoke-static {v1, v2}, LOK;->runStraightLine(Ljava/lang/Object;Ljava/lang/Object;)V
11
12   invoke-static {v1, v2}, LOK;->runBalancedJoin(Ljava/lang/Object;Ljava/lang/Object;)V
13
14   return-void
15
16.end method
17
18
19
20.method public static runNoMonitors(Ljava/lang/Object;Ljava/lang/Object;)V
21   .registers 3
22
23   invoke-static {}, LMain;->assertIsManaged()V
24
25   return-void
26
27.end method
28
29.method public static runStraightLine(Ljava/lang/Object;Ljava/lang/Object;)V
30   .registers 3
31
32   invoke-static {}, LMain;->assertIsManaged()V
33
34   monitor-enter v1      # 1
35   monitor-enter v2      # 2
36
37   monitor-exit v2       # 2
38   monitor-exit v1       # 1
39
40   return-void
41
42.end method
43
44.method public static runBalancedJoin(Ljava/lang/Object;Ljava/lang/Object;)V
45   .registers 3
46
47   invoke-static {}, LMain;->assertIsManaged()V
48
49   monitor-enter v1      # 1
50
51   if-eqz v2, :Lnull
52
53:LnotNull
54
55   monitor-enter v2      # 2
56   goto :Lend
57
58:Lnull
59   monitor-enter v2      # 2
60
61:Lend
62
63   monitor-exit v2       # 2
64   monitor-exit v1       # 1
65
66   return-void
67
68.end method
69