classfmt 0.5.1

A library for parsing Java class files
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
use crate::error::ErrorType;
use std::convert::TryFrom;

#[derive(Debug)]
#[allow(non_camel_case_types)]
pub enum Instruction {
    aload_0,
    aload_1,
    aload_2,
    aload_3,
    astore {
        index: u8
    },
    astore_0,
    astore_1,
    astore_2,
    astore_3,
    dup,
    bipush {
        byte: u8
    },
    invokedynamic {
        indexbyte1: u8,
        indexbyte2: u8,
        byte3: u8,
        byte4: u8
    },
    invokespecial {
        indexbyte1: u8,
        indexbyte2: u8
    },
    invokestatic {
        indexbyte1: u8,
        indexbyte2: u8
    },
    invokevirtual {
        indexbyte1: u8,
        indexbyte2: u8
    },
    getstatic {
        indexbyte1: u8,
        indexbyte2: u8
    },
    new {
        indexbyte1: u8,
        indexbyte2: u8
    },
    r#eturn,
    ldc {
        index: u8
    },
    nop
}

#[repr(u8)]
#[derive(Debug, Copy, Clone, PartialEq, Eq)]
#[allow(non_camel_case_types)]
pub enum Opcode {
    aaload = 0x32,
    aastore = 0x53,
    aconst_null = 0x1,
    aload = 0x19,
    aload_0 = 0x2a,
    aload_1 = 0x2b,
    aload_2 = 0x2c,
    aload_3 = 0x2d,
    anewarray = 0xbd,
    areturn = 0xb0,
    arraylength = 0xbe,
    astore = 0x3a,
    astore_0 = 0x4b,
    astore_1 = 0x4c,
    astore_2 = 0x4d,
    astore_3 = 0x4e,
    athrow = 0xbf,
    baload = 0x33,
    bastore = 0x54,
    bipush = 0x10,
    caload = 0x34,
    castore = 0x55,
    checkcast = 0xc0,
    d2f = 0x90,
    d2i = 0x8e,
    d2l = 0x8f,
    dadd = 0x63,
    daload = 0x31,
    dastore = 0x52,
    dcmpg = 0x98,
    dcmpl = 0x97,
    dconst_0 = 0x0e,
    dconst_1 = 0x0f,
    ddiv = 0x6f,
    dload = 0x18,
    dload_0 = 0x26,
    dload_1 = 0x27,
    dload_2 = 0x28,
    dload_3 = 0x29,
    dmul = 0x6b,
    dneg = 0x77,
    drem = 0x73,
    dreturn = 0xaf,
    dstore = 0x39,
    dstore_0 = 0x47,
    dstore_1 = 0x48,
    dstore_2 = 0x49,
    dstore_3 = 0x4a,
    dsub = 0x67,
    dup = 0x59,
    dup_x1 = 0x5a,
    dup_x2 = 0x5b,
    dup2 = 0x5c,
    dup2_x1 = 0x5d,
    dup2_x2 = 0x5e,
    f2d = 0x8d,
    f2i = 0x8b,
    f2l = 0x8c,
    fadd = 0x62,
    faload = 0x30,
    fastore = 0x51,
    fcmpg = 0x96,
    fcmpl = 0x95,
    fconst_0 = 0xb,
    fconst_1 = 0xc,
    fconst_2 = 0xd,
    fdiv = 0x6e,
    fload = 0x17,
    fload_0 = 0x22,
    fload_1 = 0x23,
    fload_2 = 0x24,
    fload_3 = 0x25,
    fmul = 0x6a,
    fneg = 0x76,
    frem = 0x72,
    freturn = 0xae,
    fstore = 0x38,
    fstore_0 = 0x43,
    fstore_1 = 0x44,
    fstore_2 = 0x45,
    fstore_3 = 0x46,
    fsub = 0x66,
    getfield = 0xb4,
    getstatic = 0xb2,
    goto = 0xa7,
    goto_w = 0xc8,
    i2b = 0x91,
    i2c = 0x92,
    i2d = 0x87,
    i2f = 0x86,
    i2l = 0x85,
    i2s = 0x93,
    iadd = 0x60,
    iaload = 0x2e,
    iand = 0x7e,
    iastore = 0x4f,
    iconst_m1 = 0x2,
    iconst_0 = 0x3,
    iconst_1 = 0x4,
    iconst_2 = 0x5,
    iconst_3 = 0x6,
    iconst_4 = 0x7,
    iconst_5 = 0x8,
    idiv = 0x6c,
    if_acmpeq = 0xa5,
    if_acmpne = 0xa6,
    if_icmpeq = 0x9f,
    if_icmpne = 0xa0,
    if_icmplt = 0xa1,
    if_icmpge = 0xa2,
    if_icmpgt = 0xa3,
    if_icmple = 0xa4,
    ifeq = 0x99,
    ifne = 0x9a,
    iflt = 0x9b,
    ifge = 0x9c,
    ifgt = 0x9d,
    ifle = 0x9e,
    ifnonnull = 0xc7,
    ifnull = 0xc6,
    iinc = 0x84,
    iload = 0x15,
    iload_0 = 0x1a,
    iload_1 = 0x1b,
    iload_2 = 0x1c,
    iload_3 = 0x1d,
    imul = 0x68,
    ineg = 0x74,
    instanceof = 0xc1,
    invokedynamic = 0xba,
    invokeinterface = 0xb9,
    invokespecial = 0xb7,
    invokestatic = 0xb8,
    invokevirtual = 0xb6,
    ior = 0x80,
    irem = 0x70,
    ireturn = 0xac,
    ishl = 0x78,
    ishr = 0x7a,
    istore = 0x36,
    istore_0 = 0x3b,
    istore_1 = 0x3c,
    istore_2 = 0x3d,
    istore_3 = 0x3e,
    isub = 0x64,
    iushr = 0x7c,
    ixor = 0x82,
    jsr = 0xa8,
    jsr_w = 0xc9,
    l2d = 0x8a,
    l2f = 0x89,
    l2i = 0x88,
    ladd = 0x61,
    laload = 0x2f,
    land = 0x7f,
    lastore = 0x50,
    lcmp = 0x94,
    lconst_0 = 0x9,
    lconst_1 = 0xa,
    ldc = 0x12,
    ldc_w = 0x13,
    ldc2_w = 0x14,
    ldiv = 0x6d,
    lload = 0x16,
    lload_0 = 0x1e,
    lload_1 = 0x1f,
    lload_2 = 0x20,
    lload_3 = 0x21,
    lmul = 0x69,
    lneg = 0x75,
    lookupswitch = 0xab,
    lor = 0x81,
    lrem = 0x71,
    lreturn = 0xad,
    lshl = 0x79,
    lshr = 0x7b,
    lstore = 0x37,
    lstore_0 = 0x3f,
    lstore_1 = 0x40,
    lstore_2 = 0x41,
    lstore_3 = 0x42,
    lsub = 0x65,
    lushr = 0x7d,
    lxor = 0x83,
    monitorenter = 0xc2,
    monitorexit = 0xc3,
    multianewarray = 0xc5,
    new = 0xbb,
    newarray = 0xbc,
    nop = 0x0,
    pop = 0x57,
    pop2 = 0x58,
    putfield = 0xb5,
    putstatic = 0xb3,
    ret = 0xa9,
    r#eturn = 0xb1,
    saload = 0x35,
    sastore = 0x56,
    sipush = 0x11,
    swap = 0x5f,
    tableswitch = 0xaa,
    wide = 0xc4
}

impl TryFrom<u8> for Opcode {
    type Error = ErrorType;

    fn try_from(v: u8) -> Result<Opcode, Self::Error> {
        match v {
            x if x == Opcode::aaload as u8 => Ok(Opcode::aaload),
            x if x == Opcode::aastore as u8 => Ok(Opcode::aastore),
            x if x == Opcode::aconst_null as u8 => Ok(Opcode::aconst_null),
            x if x == Opcode::aload as u8 => Ok(Opcode::aload),
            x if x == Opcode::aload_0 as u8 => Ok(Opcode::aload_0),
            x if x == Opcode::aload_1 as u8 => Ok(Opcode::aload_1),
            x if x == Opcode::aload_2 as u8 => Ok(Opcode::aload_2),
            x if x == Opcode::aload_3 as u8 => Ok(Opcode::aload_3),
            x if x == Opcode::anewarray as u8 => Ok(Opcode::anewarray),
            x if x == Opcode::areturn as u8 => Ok(Opcode::areturn),
            x if x == Opcode::arraylength as u8 => Ok(Opcode::arraylength),
            x if x == Opcode::astore as u8 => Ok(Opcode::astore),
            x if x == Opcode::astore_0 as u8 => Ok(Opcode::astore_0),
            x if x == Opcode::astore_1 as u8 => Ok(Opcode::astore_1),
            x if x == Opcode::astore_2 as u8 => Ok(Opcode::astore_2),
            x if x == Opcode::astore_3 as u8 => Ok(Opcode::astore_3),
            x if x == Opcode::athrow as u8 => Ok(Opcode::athrow),
            x if x == Opcode::baload as u8 => Ok(Opcode::baload),
            x if x == Opcode::bastore as u8 => Ok(Opcode::bastore),
            x if x == Opcode::bipush as u8 => Ok(Opcode::bipush),
            x if x == Opcode::caload as u8 => Ok(Opcode::caload),
            x if x == Opcode::castore as u8 => Ok(Opcode::castore),
            x if x == Opcode::checkcast as u8 => Ok(Opcode::checkcast),
            x if x == Opcode::d2f as u8 => Ok(Opcode::d2f),
            x if x == Opcode::d2i as u8 => Ok(Opcode::d2i),
            x if x == Opcode::d2l as u8 => Ok(Opcode::d2l),
            x if x == Opcode::dadd as u8 => Ok(Opcode::dadd),
            x if x == Opcode::daload as u8 => Ok(Opcode::daload),
            x if x == Opcode::dastore as u8 => Ok(Opcode::dastore),
            x if x == Opcode::dcmpg as u8 => Ok(Opcode::dcmpg),
            x if x == Opcode::dcmpl as u8 => Ok(Opcode::dcmpl),
            x if x == Opcode::dconst_0 as u8 => Ok(Opcode::dconst_0),
            x if x == Opcode::dconst_1 as u8 => Ok(Opcode::dconst_1),
            x if x == Opcode::ddiv as u8 => Ok(Opcode::ddiv),
            x if x == Opcode::dload as u8 => Ok(Opcode::dload),
            x if x == Opcode::dload_0 as u8 => Ok(Opcode::dload_0),
            x if x == Opcode::dload_1 as u8 => Ok(Opcode::dload_1),
            x if x == Opcode::dload_2 as u8 => Ok(Opcode::dload_2),
            x if x == Opcode::dload_3 as u8 => Ok(Opcode::dload_3),
            x if x == Opcode::dmul as u8 => Ok(Opcode::dmul),
            x if x == Opcode::dneg as u8 => Ok(Opcode::dneg),
            x if x == Opcode::drem as u8 => Ok(Opcode::drem),
            x if x == Opcode::dreturn as u8 => Ok(Opcode::dreturn),
            x if x == Opcode::dstore as u8 => Ok(Opcode::dstore),
            x if x == Opcode::dstore_0 as u8 => Ok(Opcode::dstore_0),
            x if x == Opcode::dstore_1 as u8 => Ok(Opcode::dstore_1),
            x if x == Opcode::dstore_2 as u8 => Ok(Opcode::dstore_2),
            x if x == Opcode::dstore_3 as u8 => Ok(Opcode::dstore_3),
            x if x == Opcode::dsub as u8 => Ok(Opcode::dsub),
            x if x == Opcode::dup as u8 => Ok(Opcode::dup),
            x if x == Opcode::dup_x1 as u8 => Ok(Opcode::dup_x1),
            x if x == Opcode::dup_x2 as u8 => Ok(Opcode::dup_x2),
            x if x == Opcode::dup2 as u8 => Ok(Opcode::dup2),
            x if x == Opcode::dup2_x1 as u8 => Ok(Opcode::dup2_x1),
            x if x == Opcode::dup2_x2 as u8 => Ok(Opcode::dup2_x2),
            x if x == Opcode::f2d as u8 => Ok(Opcode::f2d),
            x if x == Opcode::f2i as u8 => Ok(Opcode::f2i),
            x if x == Opcode::f2l as u8 => Ok(Opcode::f2l),
            x if x == Opcode::fadd as u8 => Ok(Opcode::fadd),
            x if x == Opcode::faload as u8 => Ok(Opcode::faload),
            x if x == Opcode::fastore as u8 => Ok(Opcode::fastore),
            x if x == Opcode::fcmpg as u8 => Ok(Opcode::fcmpg),
            x if x == Opcode::fcmpl as u8 => Ok(Opcode::fcmpl),
            x if x == Opcode::fconst_0 as u8 => Ok(Opcode::fconst_0),
            x if x == Opcode::fconst_1 as u8 => Ok(Opcode::fconst_1),
            x if x == Opcode::fconst_2 as u8 => Ok(Opcode::fconst_2),
            x if x == Opcode::fdiv as u8 => Ok(Opcode::fdiv),
            x if x == Opcode::fload as u8 => Ok(Opcode::fload),
            x if x == Opcode::fload_0 as u8 => Ok(Opcode::fload_0),
            x if x == Opcode::fload_1 as u8 => Ok(Opcode::fload_1),
            x if x == Opcode::fload_2 as u8 => Ok(Opcode::fload_2),
            x if x == Opcode::fload_3 as u8 => Ok(Opcode::fload_3),
            x if x == Opcode::fmul as u8 => Ok(Opcode::fmul),
            x if x == Opcode::fneg as u8 => Ok(Opcode::fneg),
            x if x == Opcode::frem as u8 => Ok(Opcode::frem),
            x if x == Opcode::freturn as u8 => Ok(Opcode::freturn),
            x if x == Opcode::fstore as u8 => Ok(Opcode::fstore),
            x if x == Opcode::fstore_0 as u8 => Ok(Opcode::fstore_0),
            x if x == Opcode::fstore_1 as u8 => Ok(Opcode::fstore_1),
            x if x == Opcode::fstore_2 as u8 => Ok(Opcode::fstore_2),
            x if x == Opcode::fstore_3 as u8 => Ok(Opcode::fstore_3),
            x if x == Opcode::fsub as u8 => Ok(Opcode::fsub),
            x if x == Opcode::getfield as u8 => Ok(Opcode::getfield),
            x if x == Opcode::getstatic as u8 => Ok(Opcode::getstatic),
            x if x == Opcode::goto as u8 => Ok(Opcode::goto),
            x if x == Opcode::goto_w as u8 => Ok(Opcode::goto_w),
            x if x == Opcode::i2b as u8 => Ok(Opcode::i2b),
            x if x == Opcode::i2c as u8 => Ok(Opcode::i2c),
            x if x == Opcode::i2d as u8 => Ok(Opcode::i2d),
            x if x == Opcode::i2f as u8 => Ok(Opcode::i2f),
            x if x == Opcode::i2l as u8 => Ok(Opcode::i2l),
            x if x == Opcode::i2s as u8 => Ok(Opcode::i2s),
            x if x == Opcode::iadd as u8 => Ok(Opcode::iadd),
            x if x == Opcode::iaload as u8 => Ok(Opcode::iaload),
            x if x == Opcode::iand as u8 => Ok(Opcode::iand),
            x if x == Opcode::iastore as u8 => Ok(Opcode::iastore),
            x if x == Opcode::iconst_m1 as u8 => Ok(Opcode::iconst_m1),
            x if x == Opcode::iconst_0 as u8 => Ok(Opcode::iconst_0),
            x if x == Opcode::iconst_1 as u8 => Ok(Opcode::iconst_1),
            x if x == Opcode::iconst_2 as u8 => Ok(Opcode::iconst_2),
            x if x == Opcode::iconst_3 as u8 => Ok(Opcode::iconst_3),
            x if x == Opcode::iconst_4 as u8 => Ok(Opcode::iconst_4),
            x if x == Opcode::iconst_5 as u8 => Ok(Opcode::iconst_5),
            x if x == Opcode::idiv as u8 => Ok(Opcode::idiv),
            x if x == Opcode::if_acmpeq as u8 => Ok(Opcode::if_acmpeq),
            x if x == Opcode::if_acmpne as u8 => Ok(Opcode::if_acmpne),
            x if x == Opcode::if_icmpeq as u8 => Ok(Opcode::if_icmpeq),
            x if x == Opcode::if_icmpne as u8 => Ok(Opcode::if_icmpne),
            x if x == Opcode::if_icmplt as u8 => Ok(Opcode::if_icmplt),
            x if x == Opcode::if_icmpge as u8 => Ok(Opcode::if_icmpge),
            x if x == Opcode::if_icmpgt as u8 => Ok(Opcode::if_icmpgt),
            x if x == Opcode::if_icmple as u8 => Ok(Opcode::if_icmple),
            x if x == Opcode::ifeq as u8 => Ok(Opcode::ifeq),
            x if x == Opcode::ifne as u8 => Ok(Opcode::ifne),
            x if x == Opcode::iflt as u8 => Ok(Opcode::iflt),
            x if x == Opcode::ifge as u8 => Ok(Opcode::ifge),
            x if x == Opcode::ifgt as u8 => Ok(Opcode::ifgt),
            x if x == Opcode::ifle as u8 => Ok(Opcode::ifle),
            x if x == Opcode::ifnonnull as u8 => Ok(Opcode::ifnonnull),
            x if x == Opcode::ifnull as u8 => Ok(Opcode::ifnull),
            x if x == Opcode::iinc as u8 => Ok(Opcode::iinc),
            x if x == Opcode::iload as u8 => Ok(Opcode::iload),
            x if x == Opcode::iload_0 as u8 => Ok(Opcode::iload_0),
            x if x == Opcode::iload_1 as u8 => Ok(Opcode::iload_1),
            x if x == Opcode::iload_2 as u8 => Ok(Opcode::iload_2),
            x if x == Opcode::iload_3 as u8 => Ok(Opcode::iload_3),
            x if x == Opcode::imul as u8 => Ok(Opcode::imul),
            x if x == Opcode::ineg as u8 => Ok(Opcode::ineg),
            x if x == Opcode::instanceof as u8 => Ok(Opcode::instanceof),
            x if x == Opcode::invokedynamic as u8 => Ok(Opcode::invokedynamic),
            x if x == Opcode::invokeinterface as u8 => Ok(Opcode::invokeinterface),
            x if x == Opcode::invokespecial as u8 => Ok(Opcode::invokespecial),
            x if x == Opcode::invokestatic as u8 => Ok(Opcode::invokestatic),
            x if x == Opcode::invokevirtual as u8 => Ok(Opcode::invokevirtual),
            x if x == Opcode::ior as u8 => Ok(Opcode::ior),
            x if x == Opcode::irem as u8 => Ok(Opcode::irem),
            x if x == Opcode::ireturn as u8 => Ok(Opcode::ireturn),
            x if x == Opcode::ishl as u8 => Ok(Opcode::ishl),
            x if x == Opcode::ishr as u8 => Ok(Opcode::ishr),
            x if x == Opcode::istore as u8 => Ok(Opcode::istore),
            x if x == Opcode::istore_0 as u8 => Ok(Opcode::istore_0),
            x if x == Opcode::istore_1 as u8 => Ok(Opcode::istore_1),
            x if x == Opcode::istore_2 as u8 => Ok(Opcode::istore_2),
            x if x == Opcode::istore_3 as u8 => Ok(Opcode::istore_3),
            x if x == Opcode::isub as u8 => Ok(Opcode::isub),
            x if x == Opcode::iushr as u8 => Ok(Opcode::iushr),
            x if x == Opcode::ixor as u8 => Ok(Opcode::ixor),
            x if x == Opcode::jsr as u8 => Ok(Opcode::jsr),
            x if x == Opcode::jsr_w as u8 => Ok(Opcode::jsr_w),
            x if x == Opcode::l2d as u8 => Ok(Opcode::l2d),
            x if x == Opcode::l2f as u8 => Ok(Opcode::l2f),
            x if x == Opcode::l2i as u8 => Ok(Opcode::l2i),
            x if x == Opcode::ladd as u8 => Ok(Opcode::ladd),
            x if x == Opcode::laload as u8 => Ok(Opcode::laload),
            x if x == Opcode::land as u8 => Ok(Opcode::land),
            x if x == Opcode::lastore as u8 => Ok(Opcode::lastore),
            x if x == Opcode::lcmp as u8 => Ok(Opcode::lcmp),
            x if x == Opcode::lconst_0 as u8 => Ok(Opcode::lconst_0),
            x if x == Opcode::lconst_1 as u8 => Ok(Opcode::lconst_1),
            x if x == Opcode::ldc as u8 => Ok(Opcode::ldc),
            x if x == Opcode::ldc_w as u8 => Ok(Opcode::ldc_w),
            x if x == Opcode::ldc2_w as u8 => Ok(Opcode::ldc2_w),
            x if x == Opcode::ldiv as u8 => Ok(Opcode::ldiv),
            x if x == Opcode::lload as u8 => Ok(Opcode::lload),
            x if x == Opcode::lload_0 as u8 => Ok(Opcode::lload_0),
            x if x == Opcode::lload_1 as u8 => Ok(Opcode::lload_1),
            x if x == Opcode::lload_2 as u8 => Ok(Opcode::lload_2),
            x if x == Opcode::lload_3 as u8 => Ok(Opcode::lload_3),
            x if x == Opcode::lmul as u8 => Ok(Opcode::lmul),
            x if x == Opcode::lneg as u8 => Ok(Opcode::lneg),
            x if x == Opcode::lookupswitch as u8 => Ok(Opcode::lookupswitch),
            x if x == Opcode::lor as u8 => Ok(Opcode::lor),
            x if x == Opcode::lrem as u8 => Ok(Opcode::lrem),
            x if x == Opcode::lreturn as u8 => Ok(Opcode::lreturn),
            x if x == Opcode::lshl as u8 => Ok(Opcode::lshl),
            x if x == Opcode::lshr as u8 => Ok(Opcode::lshr),
            x if x == Opcode::lstore as u8 => Ok(Opcode::lstore),
            x if x == Opcode::lstore_0 as u8 => Ok(Opcode::lstore_0),
            x if x == Opcode::lstore_1 as u8 => Ok(Opcode::lstore_1),
            x if x == Opcode::lstore_2 as u8 => Ok(Opcode::lstore_2),
            x if x == Opcode::lstore_3 as u8 => Ok(Opcode::lstore_3),
            x if x == Opcode::lsub as u8 => Ok(Opcode::lsub),
            x if x == Opcode::lushr as u8 => Ok(Opcode::lushr),
            x if x == Opcode::lxor as u8 => Ok(Opcode::lxor),
            x if x == Opcode::monitorenter as u8 => Ok(Opcode::monitorenter),
            x if x == Opcode::monitorexit as u8 => Ok(Opcode::monitorexit),
            x if x == Opcode::multianewarray as u8 => Ok(Opcode::multianewarray),
            x if x == Opcode::new as u8 => Ok(Opcode::new),
            x if x == Opcode::newarray as u8 => Ok(Opcode::newarray),
            x if x == Opcode::nop as u8 => Ok(Opcode::nop),
            x if x == Opcode::pop as u8 => Ok(Opcode::pop),
            x if x == Opcode::pop2 as u8 => Ok(Opcode::pop2),
            x if x == Opcode::putfield as u8 => Ok(Opcode::putfield),
            x if x == Opcode::putstatic as u8 => Ok(Opcode::putstatic),
            x if x == Opcode::ret as u8 => Ok(Opcode::ret),
            x if x == Opcode::eturn as u8 => Ok(Opcode::eturn),
            x if x == Opcode::saload as u8 => Ok(Opcode::saload),
            x if x == Opcode::sastore as u8 => Ok(Opcode::sastore),
            x if x == Opcode::sipush as u8 => Ok(Opcode::sipush),
            x if x == Opcode::swap as u8 => Ok(Opcode::swap),
            x if x == Opcode::tableswitch as u8 => Ok(Opcode::tableswitch),
            x if x == Opcode::wide as u8 => Ok(Opcode::wide),
            x if x == Opcode::r#eturn as u8 => Ok(Opcode::r#eturn),
            _ => Err(ErrorType::IntegerConversion)
        }
    }
}