Skip to content

Instantly share code, notes, and snippets.

@nick-botticelli
Created May 28, 2022 00:01
Show Gist options
  • Save nick-botticelli/78bbbb90c12d55110f9191fd484dad83 to your computer and use it in GitHub Desktop.
Save nick-botticelli/78bbbb90c12d55110f9191fd484dad83 to your computer and use it in GitHub Desktop.
Output from ASMifier support of my bytecode-viewer fork. The input is from `the.bytecode.club.bytecodeviewer.Settings`
package asm.the.bytecode.club.bytecodeviewer;
import org.objectweb.asm.AnnotationVisitor;
import org.objectweb.asm.Attribute;
import org.objectweb.asm.ClassReader;
import org.objectweb.asm.ClassWriter;
import org.objectweb.asm.ConstantDynamic;
import org.objectweb.asm.FieldVisitor;
import org.objectweb.asm.Handle;
import org.objectweb.asm.Label;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
import org.objectweb.asm.RecordComponentVisitor;
import org.objectweb.asm.Type;
import org.objectweb.asm.TypePath;
public class SettingsDump implements Opcodes {
public static byte[] dump () throws Exception {
ClassWriter classWriter = new ClassWriter(0);
FieldVisitor fieldVisitor;
RecordComponentVisitor recordComponentVisitor;
MethodVisitor methodVisitor;
AnnotationVisitor annotationVisitor0;
classWriter.visit(V1_8, ACC_PUBLIC | ACC_SUPER, "the/bytecode/club/bytecodeviewer/Settings", null, "java/lang/Object", null);
classWriter.visitSource("Settings.java", null);
classWriter.visitInnerClass("the/bytecode/club/bytecodeviewer/Settings$1", null, null, 0);
classWriter.visitInnerClass("the/bytecode/club/bytecodeviewer/Settings$2", null, null, 0);
classWriter.visitInnerClass("java/lang/invoke/MethodHandles$Lookup", "java/lang/invoke/MethodHandles", "Lookup", ACC_PUBLIC | ACC_FINAL | ACC_STATIC);
{
fieldVisitor = classWriter.visitField(ACC_PUBLIC | ACC_STATIC, "firstBoot", "Z", null, null);
fieldVisitor.visitEnd();
}
{
fieldVisitor = classWriter.visitField(ACC_PUBLIC | ACC_STATIC, "hasSetLanguageAsSystemLanguage", "Z", null, null);
fieldVisitor.visitEnd();
}
{
fieldVisitor = classWriter.visitField(ACC_PRIVATE | ACC_STATIC, "recentPlugins", "Ljava/util/List;", "Ljava/util/List<Ljava/lang/String;>;", null);
fieldVisitor.visitEnd();
}
{
fieldVisitor = classWriter.visitField(ACC_PRIVATE | ACC_STATIC, "recentFiles", "Ljava/util/List;", "Ljava/util/List<Ljava/lang/String;>;", null);
fieldVisitor.visitEnd();
}
{
methodVisitor = classWriter.visitMethod(ACC_PUBLIC, "<init>", "()V", null, null);
methodVisitor.visitCode();
Label label0 = new Label();
methodVisitor.visitLabel(label0);
methodVisitor.visitLineNumber(41, label0);
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKESPECIAL, "java/lang/Object", "<init>", "()V", false);
methodVisitor.visitInsn(RETURN);
Label label1 = new Label();
methodVisitor.visitLabel(label1);
methodVisitor.visitLocalVariable("this", "Lthe/bytecode/club/bytecodeviewer/Settings;", null, label0, label1, 0);
methodVisitor.visitMaxs(1, 1);
methodVisitor.visitEnd();
}
{
methodVisitor = classWriter.visitMethod(ACC_PUBLIC | ACC_STATIC | ACC_SYNCHRONIZED, "addRecentFile", "(Ljava/io/File;)V", null, null);
methodVisitor.visitCode();
Label label0 = new Label();
methodVisitor.visitLabel(label0);
methodVisitor.visitLineNumber(78, label0);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentFiles", "Ljava/util/List;");
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/io/File", "getAbsolutePath", "()Ljava/lang/String;", false);
methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/List", "remove", "(Ljava/lang/Object;)Z", true);
methodVisitor.visitInsn(POP);
Label label1 = new Label();
methodVisitor.visitLabel(label1);
methodVisitor.visitLineNumber(79, label1);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentFiles", "Ljava/util/List;");
methodVisitor.visitInsn(ICONST_0);
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/io/File", "getAbsolutePath", "()Ljava/lang/String;", false);
methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/List", "add", "(ILjava/lang/Object;)V", true);
Label label2 = new Label();
methodVisitor.visitLabel(label2);
methodVisitor.visitLineNumber(80, label2);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentFiles", "Ljava/util/List;");
methodVisitor.visitIntInsn(BIPUSH, 25);
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/util/MiscUtils", "deduplicateAndTrim", "(Ljava/util/List;I)V", false);
Label label3 = new Label();
methodVisitor.visitLabel(label3);
methodVisitor.visitLineNumber(81, label3);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Constants", "filesName", "Ljava/lang/String;");
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentFiles", "Ljava/util/List;");
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/util/MiscUtils", "listToString", "(Ljava/util/List;)Ljava/lang/String;", false);
methodVisitor.visitInsn(ICONST_0);
methodVisitor.visitMethodInsn(INVOKESTATIC, "me/konloch/kontainer/io/DiskWriter", "replaceFile", "(Ljava/lang/String;Ljava/lang/String;Z)V", false);
Label label4 = new Label();
methodVisitor.visitLabel(label4);
methodVisitor.visitLineNumber(82, label4);
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/Settings", "resetRecentFilesMenu", "()V", false);
Label label5 = new Label();
methodVisitor.visitLabel(label5);
methodVisitor.visitLineNumber(83, label5);
methodVisitor.visitInsn(RETURN);
Label label6 = new Label();
methodVisitor.visitLabel(label6);
methodVisitor.visitLocalVariable("f", "Ljava/io/File;", null, label0, label6, 0);
methodVisitor.visitMaxs(3, 1);
methodVisitor.visitEnd();
}
{
methodVisitor = classWriter.visitMethod(ACC_PUBLIC | ACC_STATIC | ACC_SYNCHRONIZED, "removeRecentFile", "(Ljava/io/File;)V", null, null);
methodVisitor.visitCode();
Label label0 = new Label();
methodVisitor.visitLabel(label0);
methodVisitor.visitLineNumber(87, label0);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentFiles", "Ljava/util/List;");
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/io/File", "getAbsolutePath", "()Ljava/lang/String;", false);
methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/List", "remove", "(Ljava/lang/Object;)Z", true);
Label label1 = new Label();
methodVisitor.visitJumpInsn(IFEQ, label1);
Label label2 = new Label();
methodVisitor.visitLabel(label2);
methodVisitor.visitLineNumber(89, label2);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Constants", "filesName", "Ljava/lang/String;");
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentFiles", "Ljava/util/List;");
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/util/MiscUtils", "listToString", "(Ljava/util/List;)Ljava/lang/String;", false);
methodVisitor.visitInsn(ICONST_0);
methodVisitor.visitMethodInsn(INVOKESTATIC, "me/konloch/kontainer/io/DiskWriter", "replaceFile", "(Ljava/lang/String;Ljava/lang/String;Z)V", false);
Label label3 = new Label();
methodVisitor.visitLabel(label3);
methodVisitor.visitLineNumber(90, label3);
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/Settings", "resetRecentFilesMenu", "()V", false);
methodVisitor.visitLabel(label1);
methodVisitor.visitLineNumber(92, label1);
methodVisitor.visitFrame(Opcodes.F_NEW, 1, new Object[] {"java/io/File"}, 0, new Object[] {});
methodVisitor.visitInsn(RETURN);
Label label4 = new Label();
methodVisitor.visitLabel(label4);
methodVisitor.visitLocalVariable("f", "Ljava/io/File;", null, label0, label4, 0);
methodVisitor.visitMaxs(3, 1);
methodVisitor.visitEnd();
}
{
methodVisitor = classWriter.visitMethod(ACC_PUBLIC | ACC_STATIC, "getRecentFile", "()Ljava/lang/String;", null, null);
methodVisitor.visitCode();
Label label0 = new Label();
methodVisitor.visitLabel(label0);
methodVisitor.visitLineNumber(96, label0);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentFiles", "Ljava/util/List;");
methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/List", "isEmpty", "()Z", true);
Label label1 = new Label();
methodVisitor.visitJumpInsn(IFEQ, label1);
Label label2 = new Label();
methodVisitor.visitLabel(label2);
methodVisitor.visitLineNumber(97, label2);
methodVisitor.visitInsn(ACONST_NULL);
methodVisitor.visitInsn(ARETURN);
methodVisitor.visitLabel(label1);
methodVisitor.visitLineNumber(99, label1);
methodVisitor.visitFrame(Opcodes.F_NEW, 0, new Object[] {}, 0, new Object[] {});
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentFiles", "Ljava/util/List;");
methodVisitor.visitInsn(ICONST_0);
methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/List", "get", "(I)Ljava/lang/Object;", true);
methodVisitor.visitTypeInsn(CHECKCAST, "java/lang/String");
methodVisitor.visitInsn(ARETURN);
methodVisitor.visitMaxs(2, 0);
methodVisitor.visitEnd();
}
{
methodVisitor = classWriter.visitMethod(ACC_PUBLIC | ACC_STATIC | ACC_SYNCHRONIZED, "addRecentPlugin", "(Ljava/io/File;)V", null, null);
methodVisitor.visitCode();
Label label0 = new Label();
methodVisitor.visitLabel(label0);
methodVisitor.visitLineNumber(109, label0);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentPlugins", "Ljava/util/List;");
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/io/File", "getAbsolutePath", "()Ljava/lang/String;", false);
methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/List", "remove", "(Ljava/lang/Object;)Z", true);
methodVisitor.visitInsn(POP);
Label label1 = new Label();
methodVisitor.visitLabel(label1);
methodVisitor.visitLineNumber(110, label1);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentPlugins", "Ljava/util/List;");
methodVisitor.visitInsn(ICONST_0);
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/io/File", "getAbsolutePath", "()Ljava/lang/String;", false);
methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/List", "add", "(ILjava/lang/Object;)V", true);
Label label2 = new Label();
methodVisitor.visitLabel(label2);
methodVisitor.visitLineNumber(111, label2);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentPlugins", "Ljava/util/List;");
methodVisitor.visitIntInsn(BIPUSH, 25);
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/util/MiscUtils", "deduplicateAndTrim", "(Ljava/util/List;I)V", false);
Label label3 = new Label();
methodVisitor.visitLabel(label3);
methodVisitor.visitLineNumber(112, label3);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Constants", "pluginsName", "Ljava/lang/String;");
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentPlugins", "Ljava/util/List;");
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/util/MiscUtils", "listToString", "(Ljava/util/List;)Ljava/lang/String;", false);
methodVisitor.visitInsn(ICONST_0);
methodVisitor.visitMethodInsn(INVOKESTATIC, "me/konloch/kontainer/io/DiskWriter", "replaceFile", "(Ljava/lang/String;Ljava/lang/String;Z)V", false);
Label label4 = new Label();
methodVisitor.visitLabel(label4);
methodVisitor.visitLineNumber(113, label4);
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/Settings", "resetRecentFilesMenu", "()V", false);
Label label5 = new Label();
methodVisitor.visitLabel(label5);
methodVisitor.visitLineNumber(114, label5);
methodVisitor.visitInsn(RETURN);
Label label6 = new Label();
methodVisitor.visitLabel(label6);
methodVisitor.visitLocalVariable("f", "Ljava/io/File;", null, label0, label6, 0);
methodVisitor.visitMaxs(3, 1);
methodVisitor.visitEnd();
}
{
methodVisitor = classWriter.visitMethod(ACC_PUBLIC | ACC_STATIC | ACC_SYNCHRONIZED, "removeRecentPlugin", "(Ljava/io/File;)V", null, null);
methodVisitor.visitCode();
Label label0 = new Label();
methodVisitor.visitLabel(label0);
methodVisitor.visitLineNumber(118, label0);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentPlugins", "Ljava/util/List;");
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/io/File", "getAbsolutePath", "()Ljava/lang/String;", false);
methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/List", "remove", "(Ljava/lang/Object;)Z", true);
Label label1 = new Label();
methodVisitor.visitJumpInsn(IFEQ, label1);
Label label2 = new Label();
methodVisitor.visitLabel(label2);
methodVisitor.visitLineNumber(120, label2);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Constants", "pluginsName", "Ljava/lang/String;");
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentPlugins", "Ljava/util/List;");
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/util/MiscUtils", "listToString", "(Ljava/util/List;)Ljava/lang/String;", false);
methodVisitor.visitInsn(ICONST_0);
methodVisitor.visitMethodInsn(INVOKESTATIC, "me/konloch/kontainer/io/DiskWriter", "replaceFile", "(Ljava/lang/String;Ljava/lang/String;Z)V", false);
Label label3 = new Label();
methodVisitor.visitLabel(label3);
methodVisitor.visitLineNumber(121, label3);
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/Settings", "resetRecentFilesMenu", "()V", false);
methodVisitor.visitLabel(label1);
methodVisitor.visitLineNumber(123, label1);
methodVisitor.visitFrame(Opcodes.F_NEW, 1, new Object[] {"java/io/File"}, 0, new Object[] {});
methodVisitor.visitInsn(RETURN);
Label label4 = new Label();
methodVisitor.visitLabel(label4);
methodVisitor.visitLocalVariable("f", "Ljava/io/File;", null, label0, label4, 0);
methodVisitor.visitMaxs(3, 1);
methodVisitor.visitEnd();
}
{
methodVisitor = classWriter.visitMethod(ACC_PROTECTED | ACC_STATIC, "resetRecentFilesMenu", "()V", null, null);
methodVisitor.visitCode();
Label label0 = new Label();
methodVisitor.visitLabel(label0);
methodVisitor.visitLineNumber(131, label0);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/BytecodeViewer", "viewer", "Lthe/bytecode/club/bytecodeviewer/gui/MainViewerGUI;");
methodVisitor.visitFieldInsn(GETFIELD, "the/bytecode/club/bytecodeviewer/gui/MainViewerGUI", "recentFilesSecondaryMenu", "Ljavax/swing/JMenu;");
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "javax/swing/JMenu", "removeAll", "()V", false);
Label label1 = new Label();
methodVisitor.visitLabel(label1);
methodVisitor.visitLineNumber(132, label1);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentFiles", "Ljava/util/List;");
methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/List", "iterator", "()Ljava/util/Iterator;", true);
methodVisitor.visitVarInsn(ASTORE, 0);
Label label2 = new Label();
methodVisitor.visitLabel(label2);
methodVisitor.visitFrame(Opcodes.F_NEW, 1, new Object[] {"java/util/Iterator"}, 0, new Object[] {});
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z", true);
Label label3 = new Label();
methodVisitor.visitJumpInsn(IFEQ, label3);
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", true);
methodVisitor.visitTypeInsn(CHECKCAST, "java/lang/String");
methodVisitor.visitVarInsn(ASTORE, 1);
Label label4 = new Label();
methodVisitor.visitLabel(label4);
methodVisitor.visitLineNumber(134, label4);
methodVisitor.visitVarInsn(ALOAD, 1);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "isEmpty", "()Z", false);
Label label5 = new Label();
methodVisitor.visitJumpInsn(IFNE, label5);
Label label6 = new Label();
methodVisitor.visitLabel(label6);
methodVisitor.visitLineNumber(136, label6);
methodVisitor.visitTypeInsn(NEW, "javax/swing/JMenuItem");
methodVisitor.visitInsn(DUP);
methodVisitor.visitVarInsn(ALOAD, 1);
methodVisitor.visitMethodInsn(INVOKESPECIAL, "javax/swing/JMenuItem", "<init>", "(Ljava/lang/String;)V", false);
methodVisitor.visitVarInsn(ASTORE, 2);
Label label7 = new Label();
methodVisitor.visitLabel(label7);
methodVisitor.visitLineNumber(137, label7);
methodVisitor.visitVarInsn(ALOAD, 2);
methodVisitor.visitInvokeDynamicInsn("actionPerformed", "()Ljava/awt/event/ActionListener;", new Handle(Opcodes.H_INVOKESTATIC, "java/lang/invoke/LambdaMetafactory", "metafactory", "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;", false), new Object[]{Type.getType("(Ljava/awt/event/ActionEvent;)V"), new Handle(Opcodes.H_INVOKESTATIC, "the/bytecode/club/bytecodeviewer/Settings", "lambda$resetRecentFilesMenu$0", "(Ljava/awt/event/ActionEvent;)V", false), Type.getType("(Ljava/awt/event/ActionEvent;)V")});
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "javax/swing/JMenuItem", "addActionListener", "(Ljava/awt/event/ActionListener;)V", false);
Label label8 = new Label();
methodVisitor.visitLabel(label8);
methodVisitor.visitLineNumber(142, label8);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/BytecodeViewer", "viewer", "Lthe/bytecode/club/bytecodeviewer/gui/MainViewerGUI;");
methodVisitor.visitFieldInsn(GETFIELD, "the/bytecode/club/bytecodeviewer/gui/MainViewerGUI", "recentFilesSecondaryMenu", "Ljavax/swing/JMenu;");
methodVisitor.visitVarInsn(ALOAD, 2);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "javax/swing/JMenu", "add", "(Ljavax/swing/JMenuItem;)Ljavax/swing/JMenuItem;", false);
methodVisitor.visitInsn(POP);
methodVisitor.visitLabel(label5);
methodVisitor.visitLineNumber(144, label5);
methodVisitor.visitFrame(Opcodes.F_NEW, 1, new Object[] {"java/util/Iterator"}, 0, new Object[] {});
methodVisitor.visitJumpInsn(GOTO, label2);
methodVisitor.visitLabel(label3);
methodVisitor.visitLineNumber(147, label3);
methodVisitor.visitFrame(Opcodes.F_NEW, 0, new Object[] {}, 0, new Object[] {});
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/BytecodeViewer", "viewer", "Lthe/bytecode/club/bytecodeviewer/gui/MainViewerGUI;");
methodVisitor.visitFieldInsn(GETFIELD, "the/bytecode/club/bytecodeviewer/gui/MainViewerGUI", "recentPluginsSecondaryMenu", "Ljavax/swing/JMenu;");
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "javax/swing/JMenu", "removeAll", "()V", false);
Label label9 = new Label();
methodVisitor.visitLabel(label9);
methodVisitor.visitLineNumber(148, label9);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentPlugins", "Ljava/util/List;");
methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/List", "iterator", "()Ljava/util/Iterator;", true);
methodVisitor.visitVarInsn(ASTORE, 0);
Label label10 = new Label();
methodVisitor.visitLabel(label10);
methodVisitor.visitFrame(Opcodes.F_NEW, 1, new Object[] {"java/util/Iterator"}, 0, new Object[] {});
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "hasNext", "()Z", true);
Label label11 = new Label();
methodVisitor.visitJumpInsn(IFEQ, label11);
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKEINTERFACE, "java/util/Iterator", "next", "()Ljava/lang/Object;", true);
methodVisitor.visitTypeInsn(CHECKCAST, "java/lang/String");
methodVisitor.visitVarInsn(ASTORE, 1);
Label label12 = new Label();
methodVisitor.visitLabel(label12);
methodVisitor.visitLineNumber(150, label12);
methodVisitor.visitVarInsn(ALOAD, 1);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/lang/String", "isEmpty", "()Z", false);
Label label13 = new Label();
methodVisitor.visitJumpInsn(IFNE, label13);
Label label14 = new Label();
methodVisitor.visitLabel(label14);
methodVisitor.visitLineNumber(152, label14);
methodVisitor.visitTypeInsn(NEW, "javax/swing/JMenuItem");
methodVisitor.visitInsn(DUP);
methodVisitor.visitVarInsn(ALOAD, 1);
methodVisitor.visitMethodInsn(INVOKESPECIAL, "javax/swing/JMenuItem", "<init>", "(Ljava/lang/String;)V", false);
methodVisitor.visitVarInsn(ASTORE, 2);
Label label15 = new Label();
methodVisitor.visitLabel(label15);
methodVisitor.visitLineNumber(153, label15);
methodVisitor.visitVarInsn(ALOAD, 2);
methodVisitor.visitInvokeDynamicInsn("actionPerformed", "()Ljava/awt/event/ActionListener;", new Handle(Opcodes.H_INVOKESTATIC, "java/lang/invoke/LambdaMetafactory", "metafactory", "(Ljava/lang/invoke/MethodHandles$Lookup;Ljava/lang/String;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodType;Ljava/lang/invoke/MethodHandle;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/CallSite;", false), new Object[]{Type.getType("(Ljava/awt/event/ActionEvent;)V"), new Handle(Opcodes.H_INVOKESTATIC, "the/bytecode/club/bytecodeviewer/Settings", "lambda$resetRecentFilesMenu$1", "(Ljava/awt/event/ActionEvent;)V", false), Type.getType("(Ljava/awt/event/ActionEvent;)V")});
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "javax/swing/JMenuItem", "addActionListener", "(Ljava/awt/event/ActionListener;)V", false);
Label label16 = new Label();
methodVisitor.visitLabel(label16);
methodVisitor.visitLineNumber(158, label16);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/BytecodeViewer", "viewer", "Lthe/bytecode/club/bytecodeviewer/gui/MainViewerGUI;");
methodVisitor.visitFieldInsn(GETFIELD, "the/bytecode/club/bytecodeviewer/gui/MainViewerGUI", "recentPluginsSecondaryMenu", "Ljavax/swing/JMenu;");
methodVisitor.visitVarInsn(ALOAD, 2);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "javax/swing/JMenu", "add", "(Ljavax/swing/JMenuItem;)Ljavax/swing/JMenuItem;", false);
methodVisitor.visitInsn(POP);
methodVisitor.visitLabel(label13);
methodVisitor.visitLineNumber(160, label13);
methodVisitor.visitFrame(Opcodes.F_NEW, 1, new Object[] {"java/util/Iterator"}, 0, new Object[] {});
methodVisitor.visitJumpInsn(GOTO, label10);
methodVisitor.visitLabel(label11);
methodVisitor.visitLineNumber(161, label11);
methodVisitor.visitFrame(Opcodes.F_NEW, 0, new Object[] {}, 0, new Object[] {});
methodVisitor.visitInsn(RETURN);
methodVisitor.visitLocalVariable("m", "Ljavax/swing/JMenuItem;", null, label7, label5, 2);
methodVisitor.visitLocalVariable("s", "Ljava/lang/String;", null, label4, label5, 1);
methodVisitor.visitLocalVariable("m", "Ljavax/swing/JMenuItem;", null, label15, label13, 2);
methodVisitor.visitLocalVariable("s", "Ljava/lang/String;", null, label12, label13, 1);
methodVisitor.visitMaxs(3, 3);
methodVisitor.visitEnd();
}
{
methodVisitor = classWriter.visitMethod(ACC_PRIVATE | ACC_STATIC | ACC_SYNTHETIC, "lambda$resetRecentFilesMenu$1", "(Ljava/awt/event/ActionEvent;)V", null, null);
methodVisitor.visitCode();
Label label0 = new Label();
methodVisitor.visitLabel(label0);
methodVisitor.visitLineNumber(155, label0);
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/awt/event/ActionEvent", "getSource", "()Ljava/lang/Object;", false);
methodVisitor.visitTypeInsn(CHECKCAST, "javax/swing/JMenuItem");
methodVisitor.visitVarInsn(ASTORE, 1);
Label label1 = new Label();
methodVisitor.visitLabel(label1);
methodVisitor.visitLineNumber(156, label1);
methodVisitor.visitTypeInsn(NEW, "java/io/File");
methodVisitor.visitInsn(DUP);
methodVisitor.visitVarInsn(ALOAD, 1);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "javax/swing/JMenuItem", "getText", "()Ljava/lang/String;", false);
methodVisitor.visitMethodInsn(INVOKESPECIAL, "java/io/File", "<init>", "(Ljava/lang/String;)V", false);
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/BytecodeViewer", "startPlugin", "(Ljava/io/File;)V", false);
Label label2 = new Label();
methodVisitor.visitLabel(label2);
methodVisitor.visitLineNumber(157, label2);
methodVisitor.visitInsn(RETURN);
Label label3 = new Label();
methodVisitor.visitLabel(label3);
methodVisitor.visitLocalVariable("e", "Ljava/awt/event/ActionEvent;", null, label0, label3, 0);
methodVisitor.visitLocalVariable("m1", "Ljavax/swing/JMenuItem;", null, label1, label3, 1);
methodVisitor.visitMaxs(3, 2);
methodVisitor.visitEnd();
}
{
methodVisitor = classWriter.visitMethod(ACC_PRIVATE | ACC_STATIC | ACC_SYNTHETIC, "lambda$resetRecentFilesMenu$0", "(Ljava/awt/event/ActionEvent;)V", null, null);
methodVisitor.visitCode();
Label label0 = new Label();
methodVisitor.visitLabel(label0);
methodVisitor.visitLineNumber(139, label0);
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/awt/event/ActionEvent", "getSource", "()Ljava/lang/Object;", false);
methodVisitor.visitTypeInsn(CHECKCAST, "javax/swing/JMenuItem");
methodVisitor.visitVarInsn(ASTORE, 1);
Label label1 = new Label();
methodVisitor.visitLabel(label1);
methodVisitor.visitLineNumber(140, label1);
methodVisitor.visitInsn(ICONST_1);
methodVisitor.visitTypeInsn(ANEWARRAY, "java/io/File");
methodVisitor.visitInsn(DUP);
methodVisitor.visitInsn(ICONST_0);
methodVisitor.visitTypeInsn(NEW, "java/io/File");
methodVisitor.visitInsn(DUP);
methodVisitor.visitVarInsn(ALOAD, 1);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "javax/swing/JMenuItem", "getText", "()Ljava/lang/String;", false);
methodVisitor.visitMethodInsn(INVOKESPECIAL, "java/io/File", "<init>", "(Ljava/lang/String;)V", false);
methodVisitor.visitInsn(AASTORE);
methodVisitor.visitInsn(ICONST_1);
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/BytecodeViewer", "openFiles", "([Ljava/io/File;Z)V", false);
Label label2 = new Label();
methodVisitor.visitLabel(label2);
methodVisitor.visitLineNumber(141, label2);
methodVisitor.visitInsn(RETURN);
Label label3 = new Label();
methodVisitor.visitLabel(label3);
methodVisitor.visitLocalVariable("e", "Ljava/awt/event/ActionEvent;", null, label0, label3, 0);
methodVisitor.visitLocalVariable("m12", "Ljavax/swing/JMenuItem;", null, label1, label3, 1);
methodVisitor.visitMaxs(6, 2);
methodVisitor.visitEnd();
}
{
methodVisitor = classWriter.visitMethod(ACC_STATIC, "<clinit>", "()V", null, null);
methodVisitor.visitCode();
Label label0 = new Label();
Label label1 = new Label();
Label label2 = new Label();
methodVisitor.visitTryCatchBlock(label0, label1, label2, "java/lang/Exception");
Label label3 = new Label();
methodVisitor.visitLabel(label3);
methodVisitor.visitLineNumber(43, label3);
methodVisitor.visitInsn(ICONST_1);
methodVisitor.visitFieldInsn(PUTSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "firstBoot", "Z");
Label label4 = new Label();
methodVisitor.visitLabel(label4);
methodVisitor.visitLineNumber(44, label4);
methodVisitor.visitInsn(ICONST_0);
methodVisitor.visitFieldInsn(PUTSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "hasSetLanguageAsSystemLanguage", "Z");
methodVisitor.visitLabel(label0);
methodVisitor.visitLineNumber(52, label0);
methodVisitor.visitTypeInsn(NEW, "java/io/File");
methodVisitor.visitInsn(DUP);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Constants", "filesName", "Ljava/lang/String;");
methodVisitor.visitMethodInsn(INVOKESPECIAL, "java/io/File", "<init>", "(Ljava/lang/String;)V", false);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/io/File", "exists", "()Z", false);
Label label5 = new Label();
methodVisitor.visitJumpInsn(IFEQ, label5);
Label label6 = new Label();
methodVisitor.visitLabel(label6);
methodVisitor.visitLineNumber(53, label6);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/BytecodeViewer", "gson", "Lcom/google/gson/Gson;");
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Constants", "filesName", "Ljava/lang/String;");
methodVisitor.visitMethodInsn(INVOKESTATIC, "me/konloch/kontainer/io/DiskReader", "loadAsString", "(Ljava/lang/String;)Ljava/lang/String;", false);
methodVisitor.visitTypeInsn(NEW, "the/bytecode/club/bytecodeviewer/Settings$1");
methodVisitor.visitInsn(DUP);
methodVisitor.visitMethodInsn(INVOKESPECIAL, "the/bytecode/club/bytecodeviewer/Settings$1", "<init>", "()V", false);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "the/bytecode/club/bytecodeviewer/Settings$1", "getType", "()Ljava/lang/reflect/Type;", false);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "com/google/gson/Gson", "fromJson", "(Ljava/lang/String;Ljava/lang/reflect/Type;)Ljava/lang/Object;", false);
methodVisitor.visitTypeInsn(CHECKCAST, "java/util/List");
methodVisitor.visitFieldInsn(PUTSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentFiles", "Ljava/util/List;");
Label label7 = new Label();
methodVisitor.visitJumpInsn(GOTO, label7);
methodVisitor.visitLabel(label5);
methodVisitor.visitLineNumber(55, label5);
methodVisitor.visitFrame(Opcodes.F_NEW, 0, new Object[] {}, 0, new Object[] {});
methodVisitor.visitTypeInsn(NEW, "java/lang/StringBuilder");
methodVisitor.visitInsn(DUP);
methodVisitor.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "()V", false);
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/Constants", "getBCVDirectory", "()Ljava/lang/String;", false);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;", false);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Constants", "fs", "Ljava/lang/String;");
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;", false);
methodVisitor.visitLdcInsn("recentfiles.bcv");
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;", false);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "toString", "()Ljava/lang/String;", false);
methodVisitor.visitInsn(ICONST_0);
methodVisitor.visitMethodInsn(INVOKESTATIC, "me/konloch/kontainer/io/DiskReader", "loadArrayList", "(Ljava/lang/String;Z)Ljava/util/List;", false);
methodVisitor.visitFieldInsn(PUTSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentFiles", "Ljava/util/List;");
methodVisitor.visitLabel(label7);
methodVisitor.visitLineNumber(57, label7);
methodVisitor.visitFrame(Opcodes.F_NEW, 0, new Object[] {}, 0, new Object[] {});
methodVisitor.visitTypeInsn(NEW, "java/io/File");
methodVisitor.visitInsn(DUP);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Constants", "pluginsName", "Ljava/lang/String;");
methodVisitor.visitMethodInsn(INVOKESPECIAL, "java/io/File", "<init>", "(Ljava/lang/String;)V", false);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/io/File", "exists", "()Z", false);
Label label8 = new Label();
methodVisitor.visitJumpInsn(IFEQ, label8);
Label label9 = new Label();
methodVisitor.visitLabel(label9);
methodVisitor.visitLineNumber(58, label9);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/BytecodeViewer", "gson", "Lcom/google/gson/Gson;");
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Constants", "pluginsName", "Ljava/lang/String;");
methodVisitor.visitMethodInsn(INVOKESTATIC, "me/konloch/kontainer/io/DiskReader", "loadAsString", "(Ljava/lang/String;)Ljava/lang/String;", false);
methodVisitor.visitTypeInsn(NEW, "the/bytecode/club/bytecodeviewer/Settings$2");
methodVisitor.visitInsn(DUP);
methodVisitor.visitMethodInsn(INVOKESPECIAL, "the/bytecode/club/bytecodeviewer/Settings$2", "<init>", "()V", false);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "the/bytecode/club/bytecodeviewer/Settings$2", "getType", "()Ljava/lang/reflect/Type;", false);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "com/google/gson/Gson", "fromJson", "(Ljava/lang/String;Ljava/lang/reflect/Type;)Ljava/lang/Object;", false);
methodVisitor.visitTypeInsn(CHECKCAST, "java/util/List");
methodVisitor.visitFieldInsn(PUTSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentPlugins", "Ljava/util/List;");
Label label10 = new Label();
methodVisitor.visitJumpInsn(GOTO, label10);
methodVisitor.visitLabel(label8);
methodVisitor.visitLineNumber(60, label8);
methodVisitor.visitFrame(Opcodes.F_NEW, 0, new Object[] {}, 0, new Object[] {});
methodVisitor.visitTypeInsn(NEW, "java/lang/StringBuilder");
methodVisitor.visitInsn(DUP);
methodVisitor.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "()V", false);
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/Constants", "getBCVDirectory", "()Ljava/lang/String;", false);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;", false);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Constants", "fs", "Ljava/lang/String;");
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;", false);
methodVisitor.visitLdcInsn("recentplugins.bcv");
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "append", "(Ljava/lang/String;)Ljava/lang/StringBuilder;", false);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/lang/StringBuilder", "toString", "()Ljava/lang/String;", false);
methodVisitor.visitInsn(ICONST_0);
methodVisitor.visitMethodInsn(INVOKESTATIC, "me/konloch/kontainer/io/DiskReader", "loadArrayList", "(Ljava/lang/String;Z)Ljava/util/List;", false);
methodVisitor.visitFieldInsn(PUTSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentPlugins", "Ljava/util/List;");
methodVisitor.visitLabel(label10);
methodVisitor.visitLineNumber(62, label10);
methodVisitor.visitFrame(Opcodes.F_NEW, 0, new Object[] {}, 0, new Object[] {});
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentFiles", "Ljava/util/List;");
methodVisitor.visitIntInsn(BIPUSH, 25);
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/util/MiscUtils", "deduplicateAndTrim", "(Ljava/util/List;I)V", false);
Label label11 = new Label();
methodVisitor.visitLabel(label11);
methodVisitor.visitLineNumber(63, label11);
methodVisitor.visitFieldInsn(GETSTATIC, "the/bytecode/club/bytecodeviewer/Settings", "recentPlugins", "Ljava/util/List;");
methodVisitor.visitIntInsn(BIPUSH, 25);
methodVisitor.visitMethodInsn(INVOKESTATIC, "the/bytecode/club/bytecodeviewer/util/MiscUtils", "deduplicateAndTrim", "(Ljava/util/List;I)V", false);
methodVisitor.visitLabel(label1);
methodVisitor.visitLineNumber(68, label1);
Label label12 = new Label();
methodVisitor.visitJumpInsn(GOTO, label12);
methodVisitor.visitLabel(label2);
methodVisitor.visitLineNumber(65, label2);
methodVisitor.visitFrame(Opcodes.F_NEW, 0, new Object[] {}, 1, new Object[] {"java/lang/Exception"});
methodVisitor.visitVarInsn(ASTORE, 0);
Label label13 = new Label();
methodVisitor.visitLabel(label13);
methodVisitor.visitLineNumber(67, label13);
methodVisitor.visitVarInsn(ALOAD, 0);
methodVisitor.visitMethodInsn(INVOKEVIRTUAL, "java/lang/Exception", "printStackTrace", "()V", false);
methodVisitor.visitLabel(label12);
methodVisitor.visitLineNumber(69, label12);
methodVisitor.visitFrame(Opcodes.F_NEW, 0, new Object[] {}, 0, new Object[] {});
methodVisitor.visitInsn(RETURN);
methodVisitor.visitLocalVariable("e", "Ljava/lang/Exception;", null, label13, label12, 0);
methodVisitor.visitMaxs(4, 1);
methodVisitor.visitEnd();
}
classWriter.visitEnd();
return classWriter.toByteArray();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment