1.class public final enum LEnum;
2.super Ljava/lang/Enum;
3
4#This class is an example of how to define an enum. You have
5#to do all of the work that java normally takes care of
6
7.field private static final synthetic $VALUES:[LEnum;
8
9.field public static final enum VALUE1:LEnum;
10.field public static final enum VALUE2:LEnum;
11
12.method static constructor <clinit>()V
13    .registers 4
14
15    #create an instance of this class for the VALUE1 value
16    new-instance v0, LEnum;
17    const-string v1, "VALUE1"
18    const/4 v2, 0
19    invoke-direct {v0, v1, v2}, LEnum;-><init>(Ljava/lang/String;I)V
20
21    #and store it in VALUE1
22    sput-object v0, LEnum;->VALUE1:LEnum;
23
24    #create an instance of this class for the VALUE2 value
25    new-instance v0, LEnum;
26    const-string v1, "VALUE2"
27    const/4 v3, 1
28    invoke-direct {v0, v1, v3}, LEnum;-><init>(Ljava/lang/String;I)V
29
30    #and store it in VALUE2
31    sput-object v0, LEnum;->VALUE2:LEnum;
32
33    #create an array of Enums, for the $VALUES member
34    const/4 v0, 2
35    new-array v0, v0, [LEnum;
36
37    #add VALUE1 to the array
38    sget-object v1, LEnum;->VALUE1:LEnum;
39    aput-object v1, v0, v2
40
41    #add VALUE2 to the array
42    sget-object v1, LEnum;->VALUE2:LEnum;
43    aput-object v1, v0, v3
44
45    #and store the array in $VALUES
46    sput-object v0, LEnum;->$VALUES:[LEnum;
47
48    return-void
49.end method
50
51.method private constructor <init>(Ljava/lang/String;I)V
52    .registers 3
53    invoke-direct {p0, p1, p2}, Ljava/lang/Enum;-><init>(Ljava/lang/String;I)V
54    return-void
55.end method
56
57.method public static valueof(Ljava/lang/String;)LEnum;
58    .registers 2
59    const-class v0, LEnum;
60    invoke-static {v0, p0}, Ljava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
61    move-result-object v1
62    check-cast v1, LEnum;
63    return-object v1
64.end method
65
66.method public static values()[LEnum;
67    .registers 1
68    sget-object v0, LEnum;->$VALUES:[LEnum;
69    invoke-virtual {v0}, [LEnum;->clone()Ljava/lang/Object;
70    move-result-object v0
71    check-cast v0, [LEnum;
72    return-object v0
73.end method