sim-codec-classfile 0.1.0

Bounded, lossless Java Virtual Machine classfile codec for SIM
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
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
// @generated by generate_opcodes.py from opcode-manifest.tsv; DO NOT EDIT.

/// Stable identity for every byte in the JVM opcode space.
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
#[repr(u8)]
#[rustfmt::skip]
pub enum Opcode {
    #[doc = "JVM opcode `nop` (`0x00`)."] Nop = 0x00,
    #[doc = "JVM opcode `aconst_null` (`0x01`)."] AconstNull = 0x01,
    #[doc = "JVM opcode `iconst_m1` (`0x02`)."] IconstM1 = 0x02,
    #[doc = "JVM opcode `iconst_0` (`0x03`)."] Iconst0 = 0x03,
    #[doc = "JVM opcode `iconst_1` (`0x04`)."] Iconst1 = 0x04,
    #[doc = "JVM opcode `iconst_2` (`0x05`)."] Iconst2 = 0x05,
    #[doc = "JVM opcode `iconst_3` (`0x06`)."] Iconst3 = 0x06,
    #[doc = "JVM opcode `iconst_4` (`0x07`)."] Iconst4 = 0x07,
    #[doc = "JVM opcode `iconst_5` (`0x08`)."] Iconst5 = 0x08,
    #[doc = "JVM opcode `lconst_0` (`0x09`)."] Lconst0 = 0x09,
    #[doc = "JVM opcode `lconst_1` (`0x0a`)."] Lconst1 = 0x0a,
    #[doc = "JVM opcode `fconst_0` (`0x0b`)."] Fconst0 = 0x0b,
    #[doc = "JVM opcode `fconst_1` (`0x0c`)."] Fconst1 = 0x0c,
    #[doc = "JVM opcode `fconst_2` (`0x0d`)."] Fconst2 = 0x0d,
    #[doc = "JVM opcode `dconst_0` (`0x0e`)."] Dconst0 = 0x0e,
    #[doc = "JVM opcode `dconst_1` (`0x0f`)."] Dconst1 = 0x0f,
    #[doc = "JVM opcode `bipush` (`0x10`)."] Bipush = 0x10,
    #[doc = "JVM opcode `sipush` (`0x11`)."] Sipush = 0x11,
    #[doc = "JVM opcode `ldc` (`0x12`)."] Ldc = 0x12,
    #[doc = "JVM opcode `ldc_w` (`0x13`)."] LdcW = 0x13,
    #[doc = "JVM opcode `ldc2_w` (`0x14`)."] Ldc2W = 0x14,
    #[doc = "JVM opcode `iload` (`0x15`)."] Iload = 0x15,
    #[doc = "JVM opcode `lload` (`0x16`)."] Lload = 0x16,
    #[doc = "JVM opcode `fload` (`0x17`)."] Fload = 0x17,
    #[doc = "JVM opcode `dload` (`0x18`)."] Dload = 0x18,
    #[doc = "JVM opcode `aload` (`0x19`)."] Aload = 0x19,
    #[doc = "JVM opcode `iload_0` (`0x1a`)."] Iload0 = 0x1a,
    #[doc = "JVM opcode `iload_1` (`0x1b`)."] Iload1 = 0x1b,
    #[doc = "JVM opcode `iload_2` (`0x1c`)."] Iload2 = 0x1c,
    #[doc = "JVM opcode `iload_3` (`0x1d`)."] Iload3 = 0x1d,
    #[doc = "JVM opcode `lload_0` (`0x1e`)."] Lload0 = 0x1e,
    #[doc = "JVM opcode `lload_1` (`0x1f`)."] Lload1 = 0x1f,
    #[doc = "JVM opcode `lload_2` (`0x20`)."] Lload2 = 0x20,
    #[doc = "JVM opcode `lload_3` (`0x21`)."] Lload3 = 0x21,
    #[doc = "JVM opcode `fload_0` (`0x22`)."] Fload0 = 0x22,
    #[doc = "JVM opcode `fload_1` (`0x23`)."] Fload1 = 0x23,
    #[doc = "JVM opcode `fload_2` (`0x24`)."] Fload2 = 0x24,
    #[doc = "JVM opcode `fload_3` (`0x25`)."] Fload3 = 0x25,
    #[doc = "JVM opcode `dload_0` (`0x26`)."] Dload0 = 0x26,
    #[doc = "JVM opcode `dload_1` (`0x27`)."] Dload1 = 0x27,
    #[doc = "JVM opcode `dload_2` (`0x28`)."] Dload2 = 0x28,
    #[doc = "JVM opcode `dload_3` (`0x29`)."] Dload3 = 0x29,
    #[doc = "JVM opcode `aload_0` (`0x2a`)."] Aload0 = 0x2a,
    #[doc = "JVM opcode `aload_1` (`0x2b`)."] Aload1 = 0x2b,
    #[doc = "JVM opcode `aload_2` (`0x2c`)."] Aload2 = 0x2c,
    #[doc = "JVM opcode `aload_3` (`0x2d`)."] Aload3 = 0x2d,
    #[doc = "JVM opcode `iaload` (`0x2e`)."] Iaload = 0x2e,
    #[doc = "JVM opcode `laload` (`0x2f`)."] Laload = 0x2f,
    #[doc = "JVM opcode `faload` (`0x30`)."] Faload = 0x30,
    #[doc = "JVM opcode `daload` (`0x31`)."] Daload = 0x31,
    #[doc = "JVM opcode `aaload` (`0x32`)."] Aaload = 0x32,
    #[doc = "JVM opcode `baload` (`0x33`)."] Baload = 0x33,
    #[doc = "JVM opcode `caload` (`0x34`)."] Caload = 0x34,
    #[doc = "JVM opcode `saload` (`0x35`)."] Saload = 0x35,
    #[doc = "JVM opcode `istore` (`0x36`)."] Istore = 0x36,
    #[doc = "JVM opcode `lstore` (`0x37`)."] Lstore = 0x37,
    #[doc = "JVM opcode `fstore` (`0x38`)."] Fstore = 0x38,
    #[doc = "JVM opcode `dstore` (`0x39`)."] Dstore = 0x39,
    #[doc = "JVM opcode `astore` (`0x3a`)."] Astore = 0x3a,
    #[doc = "JVM opcode `istore_0` (`0x3b`)."] Istore0 = 0x3b,
    #[doc = "JVM opcode `istore_1` (`0x3c`)."] Istore1 = 0x3c,
    #[doc = "JVM opcode `istore_2` (`0x3d`)."] Istore2 = 0x3d,
    #[doc = "JVM opcode `istore_3` (`0x3e`)."] Istore3 = 0x3e,
    #[doc = "JVM opcode `lstore_0` (`0x3f`)."] Lstore0 = 0x3f,
    #[doc = "JVM opcode `lstore_1` (`0x40`)."] Lstore1 = 0x40,
    #[doc = "JVM opcode `lstore_2` (`0x41`)."] Lstore2 = 0x41,
    #[doc = "JVM opcode `lstore_3` (`0x42`)."] Lstore3 = 0x42,
    #[doc = "JVM opcode `fstore_0` (`0x43`)."] Fstore0 = 0x43,
    #[doc = "JVM opcode `fstore_1` (`0x44`)."] Fstore1 = 0x44,
    #[doc = "JVM opcode `fstore_2` (`0x45`)."] Fstore2 = 0x45,
    #[doc = "JVM opcode `fstore_3` (`0x46`)."] Fstore3 = 0x46,
    #[doc = "JVM opcode `dstore_0` (`0x47`)."] Dstore0 = 0x47,
    #[doc = "JVM opcode `dstore_1` (`0x48`)."] Dstore1 = 0x48,
    #[doc = "JVM opcode `dstore_2` (`0x49`)."] Dstore2 = 0x49,
    #[doc = "JVM opcode `dstore_3` (`0x4a`)."] Dstore3 = 0x4a,
    #[doc = "JVM opcode `astore_0` (`0x4b`)."] Astore0 = 0x4b,
    #[doc = "JVM opcode `astore_1` (`0x4c`)."] Astore1 = 0x4c,
    #[doc = "JVM opcode `astore_2` (`0x4d`)."] Astore2 = 0x4d,
    #[doc = "JVM opcode `astore_3` (`0x4e`)."] Astore3 = 0x4e,
    #[doc = "JVM opcode `iastore` (`0x4f`)."] Iastore = 0x4f,
    #[doc = "JVM opcode `lastore` (`0x50`)."] Lastore = 0x50,
    #[doc = "JVM opcode `fastore` (`0x51`)."] Fastore = 0x51,
    #[doc = "JVM opcode `dastore` (`0x52`)."] Dastore = 0x52,
    #[doc = "JVM opcode `aastore` (`0x53`)."] Aastore = 0x53,
    #[doc = "JVM opcode `bastore` (`0x54`)."] Bastore = 0x54,
    #[doc = "JVM opcode `castore` (`0x55`)."] Castore = 0x55,
    #[doc = "JVM opcode `sastore` (`0x56`)."] Sastore = 0x56,
    #[doc = "JVM opcode `pop` (`0x57`)."] Pop = 0x57,
    #[doc = "JVM opcode `pop2` (`0x58`)."] Pop2 = 0x58,
    #[doc = "JVM opcode `dup` (`0x59`)."] Dup = 0x59,
    #[doc = "JVM opcode `dup_x1` (`0x5a`)."] DupX1 = 0x5a,
    #[doc = "JVM opcode `dup_x2` (`0x5b`)."] DupX2 = 0x5b,
    #[doc = "JVM opcode `dup2` (`0x5c`)."] Dup2 = 0x5c,
    #[doc = "JVM opcode `dup2_x1` (`0x5d`)."] Dup2X1 = 0x5d,
    #[doc = "JVM opcode `dup2_x2` (`0x5e`)."] Dup2X2 = 0x5e,
    #[doc = "JVM opcode `swap` (`0x5f`)."] Swap = 0x5f,
    #[doc = "JVM opcode `iadd` (`0x60`)."] Iadd = 0x60,
    #[doc = "JVM opcode `ladd` (`0x61`)."] Ladd = 0x61,
    #[doc = "JVM opcode `fadd` (`0x62`)."] Fadd = 0x62,
    #[doc = "JVM opcode `dadd` (`0x63`)."] Dadd = 0x63,
    #[doc = "JVM opcode `isub` (`0x64`)."] Isub = 0x64,
    #[doc = "JVM opcode `lsub` (`0x65`)."] Lsub = 0x65,
    #[doc = "JVM opcode `fsub` (`0x66`)."] Fsub = 0x66,
    #[doc = "JVM opcode `dsub` (`0x67`)."] Dsub = 0x67,
    #[doc = "JVM opcode `imul` (`0x68`)."] Imul = 0x68,
    #[doc = "JVM opcode `lmul` (`0x69`)."] Lmul = 0x69,
    #[doc = "JVM opcode `fmul` (`0x6a`)."] Fmul = 0x6a,
    #[doc = "JVM opcode `dmul` (`0x6b`)."] Dmul = 0x6b,
    #[doc = "JVM opcode `idiv` (`0x6c`)."] Idiv = 0x6c,
    #[doc = "JVM opcode `ldiv` (`0x6d`)."] Ldiv = 0x6d,
    #[doc = "JVM opcode `fdiv` (`0x6e`)."] Fdiv = 0x6e,
    #[doc = "JVM opcode `ddiv` (`0x6f`)."] Ddiv = 0x6f,
    #[doc = "JVM opcode `irem` (`0x70`)."] Irem = 0x70,
    #[doc = "JVM opcode `lrem` (`0x71`)."] Lrem = 0x71,
    #[doc = "JVM opcode `frem` (`0x72`)."] Frem = 0x72,
    #[doc = "JVM opcode `drem` (`0x73`)."] Drem = 0x73,
    #[doc = "JVM opcode `ineg` (`0x74`)."] Ineg = 0x74,
    #[doc = "JVM opcode `lneg` (`0x75`)."] Lneg = 0x75,
    #[doc = "JVM opcode `fneg` (`0x76`)."] Fneg = 0x76,
    #[doc = "JVM opcode `dneg` (`0x77`)."] Dneg = 0x77,
    #[doc = "JVM opcode `ishl` (`0x78`)."] Ishl = 0x78,
    #[doc = "JVM opcode `lshl` (`0x79`)."] Lshl = 0x79,
    #[doc = "JVM opcode `ishr` (`0x7a`)."] Ishr = 0x7a,
    #[doc = "JVM opcode `lshr` (`0x7b`)."] Lshr = 0x7b,
    #[doc = "JVM opcode `iushr` (`0x7c`)."] Iushr = 0x7c,
    #[doc = "JVM opcode `lushr` (`0x7d`)."] Lushr = 0x7d,
    #[doc = "JVM opcode `iand` (`0x7e`)."] Iand = 0x7e,
    #[doc = "JVM opcode `land` (`0x7f`)."] Land = 0x7f,
    #[doc = "JVM opcode `ior` (`0x80`)."] Ior = 0x80,
    #[doc = "JVM opcode `lor` (`0x81`)."] Lor = 0x81,
    #[doc = "JVM opcode `ixor` (`0x82`)."] Ixor = 0x82,
    #[doc = "JVM opcode `lxor` (`0x83`)."] Lxor = 0x83,
    #[doc = "JVM opcode `iinc` (`0x84`)."] Iinc = 0x84,
    #[doc = "JVM opcode `i2l` (`0x85`)."] I2l = 0x85,
    #[doc = "JVM opcode `i2f` (`0x86`)."] I2f = 0x86,
    #[doc = "JVM opcode `i2d` (`0x87`)."] I2d = 0x87,
    #[doc = "JVM opcode `l2i` (`0x88`)."] L2i = 0x88,
    #[doc = "JVM opcode `l2f` (`0x89`)."] L2f = 0x89,
    #[doc = "JVM opcode `l2d` (`0x8a`)."] L2d = 0x8a,
    #[doc = "JVM opcode `f2i` (`0x8b`)."] F2i = 0x8b,
    #[doc = "JVM opcode `f2l` (`0x8c`)."] F2l = 0x8c,
    #[doc = "JVM opcode `f2d` (`0x8d`)."] F2d = 0x8d,
    #[doc = "JVM opcode `d2i` (`0x8e`)."] D2i = 0x8e,
    #[doc = "JVM opcode `d2l` (`0x8f`)."] D2l = 0x8f,
    #[doc = "JVM opcode `d2f` (`0x90`)."] D2f = 0x90,
    #[doc = "JVM opcode `i2b` (`0x91`)."] I2b = 0x91,
    #[doc = "JVM opcode `i2c` (`0x92`)."] I2c = 0x92,
    #[doc = "JVM opcode `i2s` (`0x93`)."] I2s = 0x93,
    #[doc = "JVM opcode `lcmp` (`0x94`)."] Lcmp = 0x94,
    #[doc = "JVM opcode `fcmpl` (`0x95`)."] Fcmpl = 0x95,
    #[doc = "JVM opcode `fcmpg` (`0x96`)."] Fcmpg = 0x96,
    #[doc = "JVM opcode `dcmpl` (`0x97`)."] Dcmpl = 0x97,
    #[doc = "JVM opcode `dcmpg` (`0x98`)."] Dcmpg = 0x98,
    #[doc = "JVM opcode `ifeq` (`0x99`)."] Ifeq = 0x99,
    #[doc = "JVM opcode `ifne` (`0x9a`)."] Ifne = 0x9a,
    #[doc = "JVM opcode `iflt` (`0x9b`)."] Iflt = 0x9b,
    #[doc = "JVM opcode `ifge` (`0x9c`)."] Ifge = 0x9c,
    #[doc = "JVM opcode `ifgt` (`0x9d`)."] Ifgt = 0x9d,
    #[doc = "JVM opcode `ifle` (`0x9e`)."] Ifle = 0x9e,
    #[doc = "JVM opcode `if_icmpeq` (`0x9f`)."] IfIcmpeq = 0x9f,
    #[doc = "JVM opcode `if_icmpne` (`0xa0`)."] IfIcmpne = 0xa0,
    #[doc = "JVM opcode `if_icmplt` (`0xa1`)."] IfIcmplt = 0xa1,
    #[doc = "JVM opcode `if_icmpge` (`0xa2`)."] IfIcmpge = 0xa2,
    #[doc = "JVM opcode `if_icmpgt` (`0xa3`)."] IfIcmpgt = 0xa3,
    #[doc = "JVM opcode `if_icmple` (`0xa4`)."] IfIcmple = 0xa4,
    #[doc = "JVM opcode `if_acmpeq` (`0xa5`)."] IfAcmpeq = 0xa5,
    #[doc = "JVM opcode `if_acmpne` (`0xa6`)."] IfAcmpne = 0xa6,
    #[doc = "JVM opcode `goto` (`0xa7`)."] Goto = 0xa7,
    #[doc = "JVM opcode `jsr` (`0xa8`)."] Jsr = 0xa8,
    #[doc = "JVM opcode `ret` (`0xa9`)."] Ret = 0xa9,
    #[doc = "JVM opcode `tableswitch` (`0xaa`)."] Tableswitch = 0xaa,
    #[doc = "JVM opcode `lookupswitch` (`0xab`)."] Lookupswitch = 0xab,
    #[doc = "JVM opcode `ireturn` (`0xac`)."] Ireturn = 0xac,
    #[doc = "JVM opcode `lreturn` (`0xad`)."] Lreturn = 0xad,
    #[doc = "JVM opcode `freturn` (`0xae`)."] Freturn = 0xae,
    #[doc = "JVM opcode `dreturn` (`0xaf`)."] Dreturn = 0xaf,
    #[doc = "JVM opcode `areturn` (`0xb0`)."] Areturn = 0xb0,
    #[doc = "JVM opcode `return` (`0xb1`)."] Return = 0xb1,
    #[doc = "JVM opcode `getstatic` (`0xb2`)."] Getstatic = 0xb2,
    #[doc = "JVM opcode `putstatic` (`0xb3`)."] Putstatic = 0xb3,
    #[doc = "JVM opcode `getfield` (`0xb4`)."] Getfield = 0xb4,
    #[doc = "JVM opcode `putfield` (`0xb5`)."] Putfield = 0xb5,
    #[doc = "JVM opcode `invokevirtual` (`0xb6`)."] Invokevirtual = 0xb6,
    #[doc = "JVM opcode `invokespecial` (`0xb7`)."] Invokespecial = 0xb7,
    #[doc = "JVM opcode `invokestatic` (`0xb8`)."] Invokestatic = 0xb8,
    #[doc = "JVM opcode `invokeinterface` (`0xb9`)."] Invokeinterface = 0xb9,
    #[doc = "JVM opcode `invokedynamic` (`0xba`)."] Invokedynamic = 0xba,
    #[doc = "JVM opcode `new` (`0xbb`)."] New = 0xbb,
    #[doc = "JVM opcode `newarray` (`0xbc`)."] Newarray = 0xbc,
    #[doc = "JVM opcode `anewarray` (`0xbd`)."] Anewarray = 0xbd,
    #[doc = "JVM opcode `arraylength` (`0xbe`)."] Arraylength = 0xbe,
    #[doc = "JVM opcode `athrow` (`0xbf`)."] Athrow = 0xbf,
    #[doc = "JVM opcode `checkcast` (`0xc0`)."] Checkcast = 0xc0,
    #[doc = "JVM opcode `instanceof` (`0xc1`)."] Instanceof = 0xc1,
    #[doc = "JVM opcode `monitorenter` (`0xc2`)."] Monitorenter = 0xc2,
    #[doc = "JVM opcode `monitorexit` (`0xc3`)."] Monitorexit = 0xc3,
    #[doc = "JVM opcode `wide` (`0xc4`)."] Wide = 0xc4,
    #[doc = "JVM opcode `multianewarray` (`0xc5`)."] Multianewarray = 0xc5,
    #[doc = "JVM opcode `ifnull` (`0xc6`)."] Ifnull = 0xc6,
    #[doc = "JVM opcode `ifnonnull` (`0xc7`)."] Ifnonnull = 0xc7,
    #[doc = "JVM opcode `goto_w` (`0xc8`)."] GotoW = 0xc8,
    #[doc = "JVM opcode `jsr_w` (`0xc9`)."] JsrW = 0xc9,
    #[doc = "JVM opcode `breakpoint` (`0xca`)."] Breakpoint = 0xca,
    #[doc = "JVM opcode `reserved_cb` (`0xcb`)."] ReservedCB = 0xcb,
    #[doc = "JVM opcode `reserved_cc` (`0xcc`)."] ReservedCC = 0xcc,
    #[doc = "JVM opcode `reserved_cd` (`0xcd`)."] ReservedCD = 0xcd,
    #[doc = "JVM opcode `reserved_ce` (`0xce`)."] ReservedCE = 0xce,
    #[doc = "JVM opcode `reserved_cf` (`0xcf`)."] ReservedCF = 0xcf,
    #[doc = "JVM opcode `reserved_d0` (`0xd0`)."] ReservedD0 = 0xd0,
    #[doc = "JVM opcode `reserved_d1` (`0xd1`)."] ReservedD1 = 0xd1,
    #[doc = "JVM opcode `reserved_d2` (`0xd2`)."] ReservedD2 = 0xd2,
    #[doc = "JVM opcode `reserved_d3` (`0xd3`)."] ReservedD3 = 0xd3,
    #[doc = "JVM opcode `reserved_d4` (`0xd4`)."] ReservedD4 = 0xd4,
    #[doc = "JVM opcode `reserved_d5` (`0xd5`)."] ReservedD5 = 0xd5,
    #[doc = "JVM opcode `reserved_d6` (`0xd6`)."] ReservedD6 = 0xd6,
    #[doc = "JVM opcode `reserved_d7` (`0xd7`)."] ReservedD7 = 0xd7,
    #[doc = "JVM opcode `reserved_d8` (`0xd8`)."] ReservedD8 = 0xd8,
    #[doc = "JVM opcode `reserved_d9` (`0xd9`)."] ReservedD9 = 0xd9,
    #[doc = "JVM opcode `reserved_da` (`0xda`)."] ReservedDA = 0xda,
    #[doc = "JVM opcode `reserved_db` (`0xdb`)."] ReservedDB = 0xdb,
    #[doc = "JVM opcode `reserved_dc` (`0xdc`)."] ReservedDC = 0xdc,
    #[doc = "JVM opcode `reserved_dd` (`0xdd`)."] ReservedDD = 0xdd,
    #[doc = "JVM opcode `reserved_de` (`0xde`)."] ReservedDE = 0xde,
    #[doc = "JVM opcode `reserved_df` (`0xdf`)."] ReservedDF = 0xdf,
    #[doc = "JVM opcode `reserved_e0` (`0xe0`)."] ReservedE0 = 0xe0,
    #[doc = "JVM opcode `reserved_e1` (`0xe1`)."] ReservedE1 = 0xe1,
    #[doc = "JVM opcode `reserved_e2` (`0xe2`)."] ReservedE2 = 0xe2,
    #[doc = "JVM opcode `reserved_e3` (`0xe3`)."] ReservedE3 = 0xe3,
    #[doc = "JVM opcode `reserved_e4` (`0xe4`)."] ReservedE4 = 0xe4,
    #[doc = "JVM opcode `reserved_e5` (`0xe5`)."] ReservedE5 = 0xe5,
    #[doc = "JVM opcode `reserved_e6` (`0xe6`)."] ReservedE6 = 0xe6,
    #[doc = "JVM opcode `reserved_e7` (`0xe7`)."] ReservedE7 = 0xe7,
    #[doc = "JVM opcode `reserved_e8` (`0xe8`)."] ReservedE8 = 0xe8,
    #[doc = "JVM opcode `reserved_e9` (`0xe9`)."] ReservedE9 = 0xe9,
    #[doc = "JVM opcode `reserved_ea` (`0xea`)."] ReservedEA = 0xea,
    #[doc = "JVM opcode `reserved_eb` (`0xeb`)."] ReservedEB = 0xeb,
    #[doc = "JVM opcode `reserved_ec` (`0xec`)."] ReservedEC = 0xec,
    #[doc = "JVM opcode `reserved_ed` (`0xed`)."] ReservedED = 0xed,
    #[doc = "JVM opcode `reserved_ee` (`0xee`)."] ReservedEE = 0xee,
    #[doc = "JVM opcode `reserved_ef` (`0xef`)."] ReservedEF = 0xef,
    #[doc = "JVM opcode `reserved_f0` (`0xf0`)."] ReservedF0 = 0xf0,
    #[doc = "JVM opcode `reserved_f1` (`0xf1`)."] ReservedF1 = 0xf1,
    #[doc = "JVM opcode `reserved_f2` (`0xf2`)."] ReservedF2 = 0xf2,
    #[doc = "JVM opcode `reserved_f3` (`0xf3`)."] ReservedF3 = 0xf3,
    #[doc = "JVM opcode `reserved_f4` (`0xf4`)."] ReservedF4 = 0xf4,
    #[doc = "JVM opcode `reserved_f5` (`0xf5`)."] ReservedF5 = 0xf5,
    #[doc = "JVM opcode `reserved_f6` (`0xf6`)."] ReservedF6 = 0xf6,
    #[doc = "JVM opcode `reserved_f7` (`0xf7`)."] ReservedF7 = 0xf7,
    #[doc = "JVM opcode `reserved_f8` (`0xf8`)."] ReservedF8 = 0xf8,
    #[doc = "JVM opcode `reserved_f9` (`0xf9`)."] ReservedF9 = 0xf9,
    #[doc = "JVM opcode `reserved_fa` (`0xfa`)."] ReservedFA = 0xfa,
    #[doc = "JVM opcode `reserved_fb` (`0xfb`)."] ReservedFB = 0xfb,
    #[doc = "JVM opcode `reserved_fc` (`0xfc`)."] ReservedFC = 0xfc,
    #[doc = "JVM opcode `reserved_fd` (`0xfd`)."] ReservedFD = 0xfd,
    #[doc = "JVM opcode `impdep1` (`0xfe`)."] Impdep1 = 0xfe,
    #[doc = "JVM opcode `impdep2` (`0xff`)."] Impdep2 = 0xff,
}

/// Generated metadata for one JVM opcode byte.
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct OpcodeMetadata {
    /// Stable opcode identity.
    pub opcode: Opcode,
    /// JVM mnemonic, or a stable `reserved_*` name for an unassigned byte.
    pub mnemonic: &'static str,
    /// Declarative operand layout.
    pub operands: &'static str,
    /// Encoded width in bytes, or `variable`/`invalid`.
    pub width: &'static str,
    /// Control-flow category.
    pub control: &'static str,
    /// Admitted constant-pool category, or `none`.
    pub constant_pool: &'static str,
    /// Earliest admitted classfile version.
    pub since: &'static str,
    /// Last admitted classfile version, or `unbounded`.
    pub until: &'static str,
}

/// Complete byte-indexed opcode metadata table.
#[rustfmt::skip]
pub static OPCODES: [OpcodeMetadata; 256] = [
    OpcodeMetadata { opcode: Opcode::Nop, mnemonic: "nop", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::AconstNull, mnemonic: "aconst_null", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::IconstM1, mnemonic: "iconst_m1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iconst0, mnemonic: "iconst_0", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iconst1, mnemonic: "iconst_1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iconst2, mnemonic: "iconst_2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iconst3, mnemonic: "iconst_3", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iconst4, mnemonic: "iconst_4", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iconst5, mnemonic: "iconst_5", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lconst0, mnemonic: "lconst_0", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lconst1, mnemonic: "lconst_1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fconst0, mnemonic: "fconst_0", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fconst1, mnemonic: "fconst_1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fconst2, mnemonic: "fconst_2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dconst0, mnemonic: "dconst_0", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dconst1, mnemonic: "dconst_1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Bipush, mnemonic: "bipush", operands: "value:s1", width: "2", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Sipush, mnemonic: "sipush", operands: "value:s2", width: "3", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ldc, mnemonic: "ldc", operands: "constant_pool:u1", width: "2", control: "fallthrough", constant_pool: "loadable-category-1", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::LdcW, mnemonic: "ldc_w", operands: "constant_pool:u2", width: "3", control: "fallthrough", constant_pool: "loadable-category-1", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ldc2W, mnemonic: "ldc2_w", operands: "constant_pool:u2", width: "3", control: "fallthrough", constant_pool: "loadable-category-2", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iload, mnemonic: "iload", operands: "local:u1", width: "2", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lload, mnemonic: "lload", operands: "local:u1", width: "2", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fload, mnemonic: "fload", operands: "local:u1", width: "2", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dload, mnemonic: "dload", operands: "local:u1", width: "2", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Aload, mnemonic: "aload", operands: "local:u1", width: "2", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iload0, mnemonic: "iload_0", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iload1, mnemonic: "iload_1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iload2, mnemonic: "iload_2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iload3, mnemonic: "iload_3", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lload0, mnemonic: "lload_0", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lload1, mnemonic: "lload_1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lload2, mnemonic: "lload_2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lload3, mnemonic: "lload_3", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fload0, mnemonic: "fload_0", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fload1, mnemonic: "fload_1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fload2, mnemonic: "fload_2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fload3, mnemonic: "fload_3", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dload0, mnemonic: "dload_0", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dload1, mnemonic: "dload_1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dload2, mnemonic: "dload_2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dload3, mnemonic: "dload_3", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Aload0, mnemonic: "aload_0", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Aload1, mnemonic: "aload_1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Aload2, mnemonic: "aload_2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Aload3, mnemonic: "aload_3", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iaload, mnemonic: "iaload", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Laload, mnemonic: "laload", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Faload, mnemonic: "faload", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Daload, mnemonic: "daload", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Aaload, mnemonic: "aaload", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Baload, mnemonic: "baload", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Caload, mnemonic: "caload", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Saload, mnemonic: "saload", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Istore, mnemonic: "istore", operands: "local:u1", width: "2", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lstore, mnemonic: "lstore", operands: "local:u1", width: "2", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fstore, mnemonic: "fstore", operands: "local:u1", width: "2", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dstore, mnemonic: "dstore", operands: "local:u1", width: "2", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Astore, mnemonic: "astore", operands: "local:u1", width: "2", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Istore0, mnemonic: "istore_0", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Istore1, mnemonic: "istore_1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Istore2, mnemonic: "istore_2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Istore3, mnemonic: "istore_3", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lstore0, mnemonic: "lstore_0", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lstore1, mnemonic: "lstore_1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lstore2, mnemonic: "lstore_2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lstore3, mnemonic: "lstore_3", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fstore0, mnemonic: "fstore_0", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fstore1, mnemonic: "fstore_1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fstore2, mnemonic: "fstore_2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fstore3, mnemonic: "fstore_3", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dstore0, mnemonic: "dstore_0", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dstore1, mnemonic: "dstore_1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dstore2, mnemonic: "dstore_2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dstore3, mnemonic: "dstore_3", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Astore0, mnemonic: "astore_0", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Astore1, mnemonic: "astore_1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Astore2, mnemonic: "astore_2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Astore3, mnemonic: "astore_3", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iastore, mnemonic: "iastore", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lastore, mnemonic: "lastore", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fastore, mnemonic: "fastore", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dastore, mnemonic: "dastore", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Aastore, mnemonic: "aastore", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Bastore, mnemonic: "bastore", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Castore, mnemonic: "castore", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Sastore, mnemonic: "sastore", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Pop, mnemonic: "pop", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Pop2, mnemonic: "pop2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dup, mnemonic: "dup", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::DupX1, mnemonic: "dup_x1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::DupX2, mnemonic: "dup_x2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dup2, mnemonic: "dup2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dup2X1, mnemonic: "dup2_x1", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dup2X2, mnemonic: "dup2_x2", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Swap, mnemonic: "swap", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iadd, mnemonic: "iadd", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ladd, mnemonic: "ladd", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fadd, mnemonic: "fadd", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dadd, mnemonic: "dadd", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Isub, mnemonic: "isub", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lsub, mnemonic: "lsub", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fsub, mnemonic: "fsub", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dsub, mnemonic: "dsub", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Imul, mnemonic: "imul", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lmul, mnemonic: "lmul", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fmul, mnemonic: "fmul", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dmul, mnemonic: "dmul", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Idiv, mnemonic: "idiv", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ldiv, mnemonic: "ldiv", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fdiv, mnemonic: "fdiv", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ddiv, mnemonic: "ddiv", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Irem, mnemonic: "irem", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lrem, mnemonic: "lrem", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Frem, mnemonic: "frem", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Drem, mnemonic: "drem", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ineg, mnemonic: "ineg", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lneg, mnemonic: "lneg", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fneg, mnemonic: "fneg", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dneg, mnemonic: "dneg", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ishl, mnemonic: "ishl", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lshl, mnemonic: "lshl", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ishr, mnemonic: "ishr", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lshr, mnemonic: "lshr", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iushr, mnemonic: "iushr", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lushr, mnemonic: "lushr", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iand, mnemonic: "iand", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Land, mnemonic: "land", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ior, mnemonic: "ior", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lor, mnemonic: "lor", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ixor, mnemonic: "ixor", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lxor, mnemonic: "lxor", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iinc, mnemonic: "iinc", operands: "local:u1,increment:s1", width: "3", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::I2l, mnemonic: "i2l", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::I2f, mnemonic: "i2f", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::I2d, mnemonic: "i2d", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::L2i, mnemonic: "l2i", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::L2f, mnemonic: "l2f", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::L2d, mnemonic: "l2d", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::F2i, mnemonic: "f2i", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::F2l, mnemonic: "f2l", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::F2d, mnemonic: "f2d", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::D2i, mnemonic: "d2i", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::D2l, mnemonic: "d2l", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::D2f, mnemonic: "d2f", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::I2b, mnemonic: "i2b", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::I2c, mnemonic: "i2c", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::I2s, mnemonic: "i2s", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lcmp, mnemonic: "lcmp", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fcmpl, mnemonic: "fcmpl", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Fcmpg, mnemonic: "fcmpg", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dcmpl, mnemonic: "dcmpl", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dcmpg, mnemonic: "dcmpg", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ifeq, mnemonic: "ifeq", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ifne, mnemonic: "ifne", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Iflt, mnemonic: "iflt", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ifge, mnemonic: "ifge", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ifgt, mnemonic: "ifgt", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ifle, mnemonic: "ifle", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::IfIcmpeq, mnemonic: "if_icmpeq", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::IfIcmpne, mnemonic: "if_icmpne", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::IfIcmplt, mnemonic: "if_icmplt", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::IfIcmpge, mnemonic: "if_icmpge", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::IfIcmpgt, mnemonic: "if_icmpgt", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::IfIcmple, mnemonic: "if_icmple", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::IfAcmpeq, mnemonic: "if_acmpeq", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::IfAcmpne, mnemonic: "if_acmpne", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Goto, mnemonic: "goto", operands: "branch:s2", width: "3", control: "unconditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Jsr, mnemonic: "jsr", operands: "branch:s2", width: "3", control: "subroutine-call", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ret, mnemonic: "ret", operands: "local:u1", width: "2", control: "subroutine-return", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Tableswitch, mnemonic: "tableswitch", operands: "padding:align4,default:s4,low:s4,high:s4,offsets:s4[]", width: "variable", control: "switch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lookupswitch, mnemonic: "lookupswitch", operands: "padding:align4,default:s4,npairs:s4,pairs:(s4,s4)[]", width: "variable", control: "switch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ireturn, mnemonic: "ireturn", operands: "none", width: "1", control: "return", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Lreturn, mnemonic: "lreturn", operands: "none", width: "1", control: "return", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Freturn, mnemonic: "freturn", operands: "none", width: "1", control: "return", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Dreturn, mnemonic: "dreturn", operands: "none", width: "1", control: "return", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Areturn, mnemonic: "areturn", operands: "none", width: "1", control: "return", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Return, mnemonic: "return", operands: "none", width: "1", control: "return", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Getstatic, mnemonic: "getstatic", operands: "constant_pool:u2", width: "3", control: "fallthrough", constant_pool: "Fieldref", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Putstatic, mnemonic: "putstatic", operands: "constant_pool:u2", width: "3", control: "fallthrough", constant_pool: "Fieldref", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Getfield, mnemonic: "getfield", operands: "constant_pool:u2", width: "3", control: "fallthrough", constant_pool: "Fieldref", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Putfield, mnemonic: "putfield", operands: "constant_pool:u2", width: "3", control: "fallthrough", constant_pool: "Fieldref", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Invokevirtual, mnemonic: "invokevirtual", operands: "constant_pool:u2", width: "3", control: "invoke", constant_pool: "Methodref", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Invokespecial, mnemonic: "invokespecial", operands: "constant_pool:u2", width: "3", control: "invoke", constant_pool: "Methodref|InterfaceMethodref", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Invokestatic, mnemonic: "invokestatic", operands: "constant_pool:u2", width: "3", control: "invoke", constant_pool: "Methodref|InterfaceMethodref", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Invokeinterface, mnemonic: "invokeinterface", operands: "constant_pool:u2,count:u1,zero:u1", width: "5", control: "invoke", constant_pool: "InterfaceMethodref", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Invokedynamic, mnemonic: "invokedynamic", operands: "constant_pool:u2,zero:u2", width: "5", control: "invoke", constant_pool: "InvokeDynamic", since: "51.0", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::New, mnemonic: "new", operands: "constant_pool:u2", width: "3", control: "fallthrough", constant_pool: "Class", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Newarray, mnemonic: "newarray", operands: "atype:u1", width: "2", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Anewarray, mnemonic: "anewarray", operands: "constant_pool:u2", width: "3", control: "fallthrough", constant_pool: "Class", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Arraylength, mnemonic: "arraylength", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Athrow, mnemonic: "athrow", operands: "none", width: "1", control: "throw", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Checkcast, mnemonic: "checkcast", operands: "constant_pool:u2", width: "3", control: "fallthrough", constant_pool: "Class", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Instanceof, mnemonic: "instanceof", operands: "constant_pool:u2", width: "3", control: "fallthrough", constant_pool: "Class", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Monitorenter, mnemonic: "monitorenter", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Monitorexit, mnemonic: "monitorexit", operands: "none", width: "1", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Wide, mnemonic: "wide", operands: "modified_opcode:u1,local:u2[,increment:s2]", width: "variable", control: "fallthrough", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Multianewarray, mnemonic: "multianewarray", operands: "constant_pool:u2,dimensions:u1", width: "4", control: "fallthrough", constant_pool: "Class", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ifnull, mnemonic: "ifnull", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Ifnonnull, mnemonic: "ifnonnull", operands: "branch:s2", width: "3", control: "conditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::GotoW, mnemonic: "goto_w", operands: "branch:s4", width: "5", control: "unconditional-branch", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::JsrW, mnemonic: "jsr_w", operands: "branch:s4", width: "5", control: "subroutine-call", constant_pool: "none", since: "45.3", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Breakpoint, mnemonic: "breakpoint", operands: "none", width: "1", control: "reserved", constant_pool: "none", since: "reserved", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::ReservedCB, mnemonic: "reserved_cb", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedCC, mnemonic: "reserved_cc", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedCD, mnemonic: "reserved_cd", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedCE, mnemonic: "reserved_ce", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedCF, mnemonic: "reserved_cf", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedD0, mnemonic: "reserved_d0", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedD1, mnemonic: "reserved_d1", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedD2, mnemonic: "reserved_d2", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedD3, mnemonic: "reserved_d3", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedD4, mnemonic: "reserved_d4", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedD5, mnemonic: "reserved_d5", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedD6, mnemonic: "reserved_d6", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedD7, mnemonic: "reserved_d7", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedD8, mnemonic: "reserved_d8", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedD9, mnemonic: "reserved_d9", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedDA, mnemonic: "reserved_da", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedDB, mnemonic: "reserved_db", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedDC, mnemonic: "reserved_dc", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedDD, mnemonic: "reserved_dd", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedDE, mnemonic: "reserved_de", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedDF, mnemonic: "reserved_df", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedE0, mnemonic: "reserved_e0", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedE1, mnemonic: "reserved_e1", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedE2, mnemonic: "reserved_e2", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedE3, mnemonic: "reserved_e3", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedE4, mnemonic: "reserved_e4", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedE5, mnemonic: "reserved_e5", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedE6, mnemonic: "reserved_e6", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedE7, mnemonic: "reserved_e7", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedE8, mnemonic: "reserved_e8", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedE9, mnemonic: "reserved_e9", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedEA, mnemonic: "reserved_ea", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedEB, mnemonic: "reserved_eb", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedEC, mnemonic: "reserved_ec", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedED, mnemonic: "reserved_ed", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedEE, mnemonic: "reserved_ee", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedEF, mnemonic: "reserved_ef", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedF0, mnemonic: "reserved_f0", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedF1, mnemonic: "reserved_f1", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedF2, mnemonic: "reserved_f2", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedF3, mnemonic: "reserved_f3", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedF4, mnemonic: "reserved_f4", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedF5, mnemonic: "reserved_f5", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedF6, mnemonic: "reserved_f6", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedF7, mnemonic: "reserved_f7", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedF8, mnemonic: "reserved_f8", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedF9, mnemonic: "reserved_f9", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedFA, mnemonic: "reserved_fa", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedFB, mnemonic: "reserved_fb", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedFC, mnemonic: "reserved_fc", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::ReservedFD, mnemonic: "reserved_fd", operands: "invalid", width: "invalid", control: "invalid", constant_pool: "none", since: "never", until: "never" },
    OpcodeMetadata { opcode: Opcode::Impdep1, mnemonic: "impdep1", operands: "none", width: "1", control: "reserved", constant_pool: "none", since: "reserved", until: "unbounded" },
    OpcodeMetadata { opcode: Opcode::Impdep2, mnemonic: "impdep2", operands: "none", width: "1", control: "reserved", constant_pool: "none", since: "reserved", until: "unbounded" },
];

impl Opcode {
    /// Returns the identity for `byte`, including reserved identities.
    #[must_use]
    pub const fn from_byte(byte: u8) -> Self {
        OPCODES[byte as usize].opcode
    }

    /// Returns this opcode's generated metadata.
    #[must_use]
    pub const fn metadata(self) -> &'static OpcodeMetadata {
        &OPCODES[self as usize]
    }
}