commit fd9bc87c008bbc326aab38ed9637bcb8254dfb50
Author: github-classroom[bot] <66690702+github-classroom[bot]@users.noreply.github.com>
Date: Sun Oct 1 10:17:02 2023 +0000
Initial commit
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..148363c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+out
+
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..5c98b42
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,2 @@
+# Default ignored files
+/workspace.xml
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..a55e7a1
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/libraries/asm_7_1.xml b/.idea/libraries/asm_7_1.xml
new file mode 100644
index 0000000..0a6e54f
--- /dev/null
+++ b/.idea/libraries/asm_7_1.xml
@@ -0,0 +1,19 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..49a9bf2
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,10 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..4026f72
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/sonarlint/issuestore/0/b/0b96f4b9af2dc03180ffa9b36f0b5aaa1c0fdf6d b/.idea/sonarlint/issuestore/0/b/0b96f4b9af2dc03180ffa9b36f0b5aaa1c0fdf6d
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d b/.idea/sonarlint/issuestore/8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
new file mode 100644
index 0000000..e69de29
diff --git a/.idea/sonarlint/issuestore/index.pb b/.idea/sonarlint/issuestore/index.pb
new file mode 100644
index 0000000..dc122c2
--- /dev/null
+++ b/.idea/sonarlint/issuestore/index.pb
@@ -0,0 +1,5 @@
+
+9
+ README.md,8/e/8ec9a00bfd09b3190ac6b22251dbb1aa95a0579d
+A
+src/Analyzer.java,0/b/0b96f4b9af2dc03180ffa9b36f0b5aaa1c0fdf6d
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..87a2b91
--- /dev/null
+++ b/README.md
@@ -0,0 +1,31 @@
+# Lab 2 - Software Performance 2023
+
+This is Lab 2 of the **Software Performance** course at USI.
+
+Go to [this Lab on iCorsi](https://www.icorsi.ch/course/view.php?id=16963).
+
+## Submission Info
+
+Property | Value
+------------ | -------------
+First Name | ...
+Last Name | ...
+
+## Submission Checklist
+
+Please complete this checklist (turn [ ] into [X]) before you submit:
+
+- [ ] I completed the above Submission Info
+- [ ] I built the project in IntelliJ (Build > Build Project)
+- [ ] I ran test/test.sh and verified that it runs (and fails)
+- [ ] I implemented the analysis in src/Analyzer.java, outputting:
+ - [ ] Number of classes (incl. interfaces and enums)
+ - [ ] Number of concrete non-native, non-abstract methods (methods with code)
+ - [ ] Total number of instructions (ignoring instructions with opcode -1)
+ - [ ] Total number of instructions by opcode (ignoring instructions with opcode -1)
+ - [ ] Total number of method invocation instructions (== call sites)
+ - [ ] Total number of conditional branch instructions (excluding GOTO, but including multi-way branches)
+- [ ] I wrote the source code myself and did not look at the source code of my classmates
+- [ ] I ran test/test.sh and verified that it runs and passes
+- [ ] I committed my changes (at least one commit, but possibly many)
+- [ ] I pushed my commits to GitHub
diff --git a/lib/asm-7.1-javadoc.jar b/lib/asm-7.1-javadoc.jar
new file mode 100644
index 0000000..aa69a1b
Binary files /dev/null and b/lib/asm-7.1-javadoc.jar differ
diff --git a/lib/asm-7.1-sources.jar b/lib/asm-7.1-sources.jar
new file mode 100644
index 0000000..48f8aba
Binary files /dev/null and b/lib/asm-7.1-sources.jar differ
diff --git a/lib/asm-7.1.jar b/lib/asm-7.1.jar
new file mode 100644
index 0000000..355eb08
Binary files /dev/null and b/lib/asm-7.1.jar differ
diff --git a/lib/asm-tree-7.1-javadoc.jar b/lib/asm-tree-7.1-javadoc.jar
new file mode 100644
index 0000000..3a75f80
Binary files /dev/null and b/lib/asm-tree-7.1-javadoc.jar differ
diff --git a/lib/asm-tree-7.1-sources.jar b/lib/asm-tree-7.1-sources.jar
new file mode 100644
index 0000000..df27a98
Binary files /dev/null and b/lib/asm-tree-7.1-sources.jar differ
diff --git a/lib/asm-tree-7.1.jar b/lib/asm-tree-7.1.jar
new file mode 100644
index 0000000..8e9ddbd
Binary files /dev/null and b/lib/asm-tree-7.1.jar differ
diff --git a/lib/asm-util-7.1-javadoc.jar b/lib/asm-util-7.1-javadoc.jar
new file mode 100644
index 0000000..b4c7605
Binary files /dev/null and b/lib/asm-util-7.1-javadoc.jar differ
diff --git a/lib/asm-util-7.1-sources.jar b/lib/asm-util-7.1-sources.jar
new file mode 100644
index 0000000..499579e
Binary files /dev/null and b/lib/asm-util-7.1-sources.jar differ
diff --git a/lib/asm-util-7.1.jar b/lib/asm-util-7.1.jar
new file mode 100644
index 0000000..5e61f2c
Binary files /dev/null and b/lib/asm-util-7.1.jar differ
diff --git a/src/Analyzer.java b/src/Analyzer.java
new file mode 100644
index 0000000..81a0294
--- /dev/null
+++ b/src/Analyzer.java
@@ -0,0 +1,60 @@
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+
+import org.objectweb.asm.ClassReader;
+import org.objectweb.asm.tree.ClassNode;
+import org.objectweb.asm.tree.MethodNode;
+
+
+public class Analyzer {
+
+ // TODO add data structure to keep statistics
+
+ public static void main(final String[] args) throws IOException {
+ final String jarFileName = args[0];
+ System.out.println("Analyzing "+jarFileName);
+ final JarFile jar = new JarFile(jarFileName);
+ analyzeJar(jar);
+ // TODO output statistics
+ }
+
+ private static void analyzeJar(final JarFile jar) throws IOException {
+ final Enumeration entries = jar.entries();
+ while (entries.hasMoreElements()) {
+ final JarEntry entry = entries.nextElement();
+ analyzeJarEntry(entry, jar);
+ }
+ }
+
+ private static void analyzeJarEntry(final JarEntry entry, final JarFile jar) throws IOException {
+ if (!entry.isDirectory() && entry.getName().endsWith(".class")) {
+ System.out.println(" File "+entry.getName());
+ final InputStream is = jar.getInputStream(entry);
+ final ClassReader classReader = new ClassReader(is);
+ final ClassNode classNode = new ClassNode();
+ classReader.accept(classNode, ClassReader.SKIP_FRAMES);
+ analyzeClass(classNode);
+ }
+ }
+
+ private static void analyzeClass(final ClassNode classNode) {
+ System.out.println(" Class "+classNode.name);
+ final List methods = classNode.methods;
+ for (final MethodNode methodNode : methods) {
+ analyzeMethod(methodNode);
+ }
+
+ }
+
+ private static void analyzeMethod(final MethodNode methodNode) {
+ System.out.println(" Method "+methodNode.name+methodNode.desc);
+ // TODO implement required analysis
+ }
+
+ // TODO possibly add extra methods (adding classes is fine, too)
+
+}
diff --git a/starter-lab-02-simple-bytecode-metrics.iml b/starter-lab-02-simple-bytecode-metrics.iml
new file mode 100644
index 0000000..cc2439b
--- /dev/null
+++ b/starter-lab-02-simple-bytecode-metrics.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/test/asm-6.2.1.jar b/test/asm-6.2.1.jar
new file mode 100644
index 0000000..cc00792
Binary files /dev/null and b/test/asm-6.2.1.jar differ
diff --git a/test/asm-6.2.1.jar-expected.output.txt b/test/asm-6.2.1.jar-expected.output.txt
new file mode 100644
index 0000000..ca89085
--- /dev/null
+++ b/test/asm-6.2.1.jar-expected.output.txt
@@ -0,0 +1,842 @@
+Analyzing asm-6.2.1.jar
+ File module-info.class
+ Class module-info
+ File org/objectweb/asm/AnnotationVisitor.class
+ Class org/objectweb/asm/AnnotationVisitor
+ Method (I)V
+ Method (ILorg/objectweb/asm/AnnotationVisitor;)V
+ Method visit(Ljava/lang/String;Ljava/lang/Object;)V
+ Method visitEnum(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+ Method visitAnnotation(Ljava/lang/String;Ljava/lang/String;)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitArray(Ljava/lang/String;)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitEnd()V
+ File org/objectweb/asm/AnnotationWriter.class
+ Class org/objectweb/asm/AnnotationWriter
+ Method (Lorg/objectweb/asm/SymbolTable;ZLorg/objectweb/asm/ByteVector;Lorg/objectweb/asm/AnnotationWriter;)V
+ Method (Lorg/objectweb/asm/SymbolTable;Lorg/objectweb/asm/ByteVector;Lorg/objectweb/asm/AnnotationWriter;)V
+ Method visit(Ljava/lang/String;Ljava/lang/Object;)V
+ Method visitEnum(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+ Method visitAnnotation(Ljava/lang/String;Ljava/lang/String;)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitArray(Ljava/lang/String;)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitEnd()V
+ Method computeAnnotationsSize(Ljava/lang/String;)I
+ Method putAnnotations(ILorg/objectweb/asm/ByteVector;)V
+ Method computeParameterAnnotationsSize(Ljava/lang/String;[Lorg/objectweb/asm/AnnotationWriter;I)I
+ Method putParameterAnnotations(I[Lorg/objectweb/asm/AnnotationWriter;ILorg/objectweb/asm/ByteVector;)V
+ File org/objectweb/asm/Attribute$Set.class
+ Class org/objectweb/asm/Attribute$Set
+ Method ()V
+ Method addAttributes(Lorg/objectweb/asm/Attribute;)V
+ Method toArray()[Lorg/objectweb/asm/Attribute;
+ Method contains(Lorg/objectweb/asm/Attribute;)Z
+ Method add(Lorg/objectweb/asm/Attribute;)V
+ File org/objectweb/asm/Attribute.class
+ Class org/objectweb/asm/Attribute
+ Method (Ljava/lang/String;)V
+ Method isUnknown()Z
+ Method isCodeAttribute()Z
+ Method getLabels()[Lorg/objectweb/asm/Label;
+ Method read(Lorg/objectweb/asm/ClassReader;II[CI[Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Attribute;
+ Method write(Lorg/objectweb/asm/ClassWriter;[BIII)Lorg/objectweb/asm/ByteVector;
+ Method getAttributeCount()I
+ Method computeAttributesSize(Lorg/objectweb/asm/SymbolTable;)I
+ Method computeAttributesSize(Lorg/objectweb/asm/SymbolTable;[BIII)I
+ Method putAttributes(Lorg/objectweb/asm/SymbolTable;Lorg/objectweb/asm/ByteVector;)V
+ Method putAttributes(Lorg/objectweb/asm/SymbolTable;[BIIILorg/objectweb/asm/ByteVector;)V
+ File org/objectweb/asm/ByteVector.class
+ Class org/objectweb/asm/ByteVector
+ Method ()V
+ Method (I)V
+ Method ([B)V
+ Method putByte(I)Lorg/objectweb/asm/ByteVector;
+ Method put11(II)Lorg/objectweb/asm/ByteVector;
+ Method putShort(I)Lorg/objectweb/asm/ByteVector;
+ Method put12(II)Lorg/objectweb/asm/ByteVector;
+ Method put112(III)Lorg/objectweb/asm/ByteVector;
+ Method putInt(I)Lorg/objectweb/asm/ByteVector;
+ Method put122(III)Lorg/objectweb/asm/ByteVector;
+ Method putLong(J)Lorg/objectweb/asm/ByteVector;
+ Method putUTF8(Ljava/lang/String;)Lorg/objectweb/asm/ByteVector;
+ Method encodeUTF8(Ljava/lang/String;II)Lorg/objectweb/asm/ByteVector;
+ Method putByteArray([BII)Lorg/objectweb/asm/ByteVector;
+ Method enlarge(I)V
+ File org/objectweb/asm/ClassReader.class
+ Class org/objectweb/asm/ClassReader
+ Method ([B)V
+ Method ([BII)V
+ Method ([BIZ)V
+ Method (Ljava/io/InputStream;)V
+ Method (Ljava/lang/String;)V
+ Method readStream(Ljava/io/InputStream;Z)[B
+ Method getAccess()I
+ Method getClassName()Ljava/lang/String;
+ Method getSuperName()Ljava/lang/String;
+ Method getInterfaces()[Ljava/lang/String;
+ Method accept(Lorg/objectweb/asm/ClassVisitor;I)V
+ Method accept(Lorg/objectweb/asm/ClassVisitor;[Lorg/objectweb/asm/Attribute;I)V
+ Method readModule(Lorg/objectweb/asm/ClassVisitor;Lorg/objectweb/asm/Context;IILjava/lang/String;)V
+ Method readField(Lorg/objectweb/asm/ClassVisitor;Lorg/objectweb/asm/Context;I)I
+ Method readMethod(Lorg/objectweb/asm/ClassVisitor;Lorg/objectweb/asm/Context;I)I
+ Method readCode(Lorg/objectweb/asm/MethodVisitor;Lorg/objectweb/asm/Context;I)V
+ Method readLabel(I[Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Label;
+ Method createLabel(I[Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Label;
+ Method createDebugLabel(I[Lorg/objectweb/asm/Label;)V
+ Method readTypeAnnotations(Lorg/objectweb/asm/MethodVisitor;Lorg/objectweb/asm/Context;IZ)[I
+ Method getTypeAnnotationBytecodeOffset([II)I
+ Method readTypeAnnotationTarget(Lorg/objectweb/asm/Context;I)I
+ Method readParameterAnnotations(Lorg/objectweb/asm/MethodVisitor;Lorg/objectweb/asm/Context;IZ)V
+ Method readElementValues(Lorg/objectweb/asm/AnnotationVisitor;IZ[C)I
+ Method readElementValue(Lorg/objectweb/asm/AnnotationVisitor;ILjava/lang/String;[C)I
+ Method computeImplicitFrame(Lorg/objectweb/asm/Context;)V
+ Method readStackMapFrame(IZZLorg/objectweb/asm/Context;)I
+ Method readVerificationTypeInfo(I[Ljava/lang/Object;I[C[Lorg/objectweb/asm/Label;)I
+ Method getFirstAttributeOffset()I
+ Method readAttribute([Lorg/objectweb/asm/Attribute;Ljava/lang/String;II[CI[Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Attribute;
+ Method getItemCount()I
+ Method getItem(I)I
+ Method getMaxStringLength()I
+ Method readByte(I)I
+ Method readUnsignedShort(I)I
+ Method readShort(I)S
+ Method readInt(I)I
+ Method readLong(I)J
+ Method readUTF8(I[C)Ljava/lang/String;
+ Method readUTF(I[C)Ljava/lang/String;
+ Method readUTF(II[C)Ljava/lang/String;
+ Method readStringish(I[C)Ljava/lang/String;
+ Method readClass(I[C)Ljava/lang/String;
+ Method readModule(I[C)Ljava/lang/String;
+ Method readPackage(I[C)Ljava/lang/String;
+ Method readConstantDynamic(I[C)Lorg/objectweb/asm/ConstantDynamic;
+ Method readConst(I[C)Ljava/lang/Object;
+ File org/objectweb/asm/ClassTooLargeException.class
+ Class org/objectweb/asm/ClassTooLargeException
+ Method (Ljava/lang/String;I)V
+ Method getClassName()Ljava/lang/String;
+ Method getConstantPoolCount()I
+ File org/objectweb/asm/ClassVisitor.class
+ Class org/objectweb/asm/ClassVisitor
+ Method (I)V
+ Method (ILorg/objectweb/asm/ClassVisitor;)V
+ Method visit(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
+ Method visitSource(Ljava/lang/String;Ljava/lang/String;)V
+ Method visitModule(Ljava/lang/String;ILjava/lang/String;)Lorg/objectweb/asm/ModuleVisitor;
+ Method visitNestHostExperimental(Ljava/lang/String;)V
+ Method visitOuterClass(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+ Method visitAnnotation(Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitTypeAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitAttribute(Lorg/objectweb/asm/Attribute;)V
+ Method visitNestMemberExperimental(Ljava/lang/String;)V
+ Method visitInnerClass(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+ Method visitField(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)Lorg/objectweb/asm/FieldVisitor;
+ Method visitMethod(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Lorg/objectweb/asm/MethodVisitor;
+ Method visitEnd()V
+ File org/objectweb/asm/ClassWriter.class
+ Class org/objectweb/asm/ClassWriter
+ Method (I)V
+ Method (Lorg/objectweb/asm/ClassReader;I)V
+ Method visit(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
+ Method visitSource(Ljava/lang/String;Ljava/lang/String;)V
+ Method visitModule(Ljava/lang/String;ILjava/lang/String;)Lorg/objectweb/asm/ModuleVisitor;
+ Method visitNestHostExperimental(Ljava/lang/String;)V
+ Method visitOuterClass(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+ Method visitAnnotation(Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitTypeAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitAttribute(Lorg/objectweb/asm/Attribute;)V
+ Method visitNestMemberExperimental(Ljava/lang/String;)V
+ Method visitInnerClass(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+ Method visitField(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)Lorg/objectweb/asm/FieldVisitor;
+ Method visitMethod(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Lorg/objectweb/asm/MethodVisitor;
+ Method visitEnd()V
+ Method toByteArray()[B
+ Method replaceAsmInstructions([BZ)[B
+ Method getAttributePrototypes()[Lorg/objectweb/asm/Attribute;
+ Method newConst(Ljava/lang/Object;)I
+ Method newUTF8(Ljava/lang/String;)I
+ Method newClass(Ljava/lang/String;)I
+ Method newMethodType(Ljava/lang/String;)I
+ Method newModule(Ljava/lang/String;)I
+ Method newPackage(Ljava/lang/String;)I
+ Method newHandle(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
+ Method newHandle(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I
+ Method newConstantDynamic(Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)I
+ Method newInvokeDynamic(Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)I
+ Method newField(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
+ Method newMethod(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)I
+ Method newNameType(Ljava/lang/String;Ljava/lang/String;)I
+ Method getCommonSuperClass(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+ Method getClassLoader()Ljava/lang/ClassLoader;
+ File org/objectweb/asm/ConstantDynamic.class
+ Class org/objectweb/asm/ConstantDynamic
+ Method (Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)V
+ Method getName()Ljava/lang/String;
+ Method getDescriptor()Ljava/lang/String;
+ Method getBootstrapMethod()Lorg/objectweb/asm/Handle;
+ Method getBootstrapMethodArguments()[Ljava/lang/Object;
+ Method equals(Ljava/lang/Object;)Z
+ Method hashCode()I
+ Method toString()Ljava/lang/String;
+ File org/objectweb/asm/Constants.class
+ Class org/objectweb/asm/Constants
+ Method ()V
+ File org/objectweb/asm/Context.class
+ Class org/objectweb/asm/Context
+ Method ()V
+ File org/objectweb/asm/CurrentFrame.class
+ Class org/objectweb/asm/CurrentFrame
+ Method (Lorg/objectweb/asm/Label;)V
+ Method execute(IILorg/objectweb/asm/Symbol;Lorg/objectweb/asm/SymbolTable;)V
+ File org/objectweb/asm/Edge.class
+ Class org/objectweb/asm/Edge
+ Method (ILorg/objectweb/asm/Label;Lorg/objectweb/asm/Edge;)V
+ File org/objectweb/asm/FieldVisitor.class
+ Class org/objectweb/asm/FieldVisitor
+ Method (I)V
+ Method (ILorg/objectweb/asm/FieldVisitor;)V
+ Method visitAnnotation(Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitTypeAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitAttribute(Lorg/objectweb/asm/Attribute;)V
+ Method visitEnd()V
+ File org/objectweb/asm/FieldWriter.class
+ Class org/objectweb/asm/FieldWriter
+ Method (Lorg/objectweb/asm/SymbolTable;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
+ Method visitAnnotation(Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitTypeAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitAttribute(Lorg/objectweb/asm/Attribute;)V
+ Method visitEnd()V
+ Method computeFieldInfoSize()I
+ Method putFieldInfo(Lorg/objectweb/asm/ByteVector;)V
+ Method collectAttributePrototypes(Lorg/objectweb/asm/Attribute$Set;)V
+ File org/objectweb/asm/Frame.class
+ Class org/objectweb/asm/Frame
+ Method getAbstractTypeFromApiFormat(Lorg/objectweb/asm/SymbolTable;Ljava/lang/Object;)I
+ Method getAbstractTypeFromInternalName(Lorg/objectweb/asm/SymbolTable;Ljava/lang/String;)I
+ Method getAbstractTypeFromDescriptor(Lorg/objectweb/asm/SymbolTable;Ljava/lang/String;I)I
+ Method (Lorg/objectweb/asm/Label;)V
+ Method copyFrom(Lorg/objectweb/asm/Frame;)V
+ Method setInputFrameFromDescriptor(Lorg/objectweb/asm/SymbolTable;ILjava/lang/String;I)V
+ Method setInputFrameFromApiFormat(Lorg/objectweb/asm/SymbolTable;I[Ljava/lang/Object;I[Ljava/lang/Object;)V
+ Method getInputStackSize()I
+ Method getLocal(I)I
+ Method setLocal(II)V
+ Method push(I)V
+ Method push(Lorg/objectweb/asm/SymbolTable;Ljava/lang/String;)V
+ Method pop()I
+ Method pop(I)V
+ Method pop(Ljava/lang/String;)V
+ Method addInitializedType(I)V
+ Method getInitializedType(Lorg/objectweb/asm/SymbolTable;I)I
+ Method execute(IILorg/objectweb/asm/Symbol;Lorg/objectweb/asm/SymbolTable;)V
+ Method merge(Lorg/objectweb/asm/SymbolTable;Lorg/objectweb/asm/Frame;I)Z
+ Method merge(Lorg/objectweb/asm/SymbolTable;I[II)Z
+ Method accept(Lorg/objectweb/asm/MethodWriter;)V
+ Method putAbstractType(Lorg/objectweb/asm/SymbolTable;ILorg/objectweb/asm/ByteVector;)V
+ File org/objectweb/asm/Handle.class
+ Class org/objectweb/asm/Handle
+ Method (ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+ Method (ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
+ Method getTag()I
+ Method getOwner()Ljava/lang/String;
+ Method getName()Ljava/lang/String;
+ Method getDesc()Ljava/lang/String;
+ Method isInterface()Z
+ Method equals(Ljava/lang/Object;)Z
+ Method hashCode()I
+ Method toString()Ljava/lang/String;
+ File org/objectweb/asm/Handler.class
+ Class org/objectweb/asm/Handler
+ Method (Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;ILjava/lang/String;)V
+ Method (Lorg/objectweb/asm/Handler;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;)V
+ Method removeRange(Lorg/objectweb/asm/Handler;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Handler;
+ Method getExceptionTableLength(Lorg/objectweb/asm/Handler;)I
+ Method getExceptionTableSize(Lorg/objectweb/asm/Handler;)I
+ Method putExceptionTable(Lorg/objectweb/asm/Handler;Lorg/objectweb/asm/ByteVector;)V
+ File org/objectweb/asm/Label.class
+ Class org/objectweb/asm/Label
+ Method ()V
+ Method getOffset()I
+ Method getCanonicalInstance()Lorg/objectweb/asm/Label;
+ Method addLineNumber(I)V
+ Method accept(Lorg/objectweb/asm/MethodVisitor;Z)V
+ Method put(Lorg/objectweb/asm/ByteVector;IZ)V
+ Method addForwardReference(III)V
+ Method resolve([BI)Z
+ Method markSubroutine(S)V
+ Method addSubroutineRetSuccessors(Lorg/objectweb/asm/Label;)V
+ Method pushSuccessors(Lorg/objectweb/asm/Label;)Lorg/objectweb/asm/Label;
+ Method toString()Ljava/lang/String;
+ Method ()V
+ File org/objectweb/asm/MethodTooLargeException.class
+ Class org/objectweb/asm/MethodTooLargeException
+ Method (Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+ Method getClassName()Ljava/lang/String;
+ Method getMethodName()Ljava/lang/String;
+ Method getDescriptor()Ljava/lang/String;
+ Method getCodeSize()I
+ File org/objectweb/asm/MethodVisitor.class
+ Class org/objectweb/asm/MethodVisitor
+ Method (I)V
+ Method (ILorg/objectweb/asm/MethodVisitor;)V
+ Method visitParameter(Ljava/lang/String;I)V
+ Method visitAnnotationDefault()Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitAnnotation(Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitTypeAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitAnnotableParameterCount(IZ)V
+ Method visitParameterAnnotation(ILjava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitAttribute(Lorg/objectweb/asm/Attribute;)V
+ Method visitCode()V
+ Method visitFrame(II[Ljava/lang/Object;I[Ljava/lang/Object;)V
+ Method visitInsn(I)V
+ Method visitIntInsn(II)V
+ Method visitVarInsn(II)V
+ Method visitTypeInsn(ILjava/lang/String;)V
+ Method visitFieldInsn(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+ Method visitMethodInsn(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+ Method visitMethodInsn(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
+ Method visitInvokeDynamicInsn(Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)V
+ Method visitJumpInsn(ILorg/objectweb/asm/Label;)V
+ Method visitLabel(Lorg/objectweb/asm/Label;)V
+ Method visitLdcInsn(Ljava/lang/Object;)V
+ Method visitIincInsn(II)V
+ Method visitTableSwitchInsn(IILorg/objectweb/asm/Label;[Lorg/objectweb/asm/Label;)V
+ Method visitLookupSwitchInsn(Lorg/objectweb/asm/Label;[I[Lorg/objectweb/asm/Label;)V
+ Method visitMultiANewArrayInsn(Ljava/lang/String;I)V
+ Method visitInsnAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitTryCatchBlock(Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;Ljava/lang/String;)V
+ Method visitTryCatchAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitLocalVariable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;I)V
+ Method visitLocalVariableAnnotation(ILorg/objectweb/asm/TypePath;[Lorg/objectweb/asm/Label;[Lorg/objectweb/asm/Label;[ILjava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitLineNumber(ILorg/objectweb/asm/Label;)V
+ Method visitMaxs(II)V
+ Method visitEnd()V
+ File org/objectweb/asm/MethodWriter.class
+ Class org/objectweb/asm/MethodWriter
+ Method (Lorg/objectweb/asm/SymbolTable;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;I)V
+ Method hasFrames()Z
+ Method hasAsmInstructions()Z
+ Method visitParameter(Ljava/lang/String;I)V
+ Method visitAnnotationDefault()Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitAnnotation(Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitTypeAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitAnnotableParameterCount(IZ)V
+ Method visitParameterAnnotation(ILjava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitAttribute(Lorg/objectweb/asm/Attribute;)V
+ Method visitCode()V
+ Method visitFrame(II[Ljava/lang/Object;I[Ljava/lang/Object;)V
+ Method visitInsn(I)V
+ Method visitIntInsn(II)V
+ Method visitVarInsn(II)V
+ Method visitTypeInsn(ILjava/lang/String;)V
+ Method visitFieldInsn(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+ Method visitMethodInsn(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
+ Method visitInvokeDynamicInsn(Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)V
+ Method visitJumpInsn(ILorg/objectweb/asm/Label;)V
+ Method visitLabel(Lorg/objectweb/asm/Label;)V
+ Method visitLdcInsn(Ljava/lang/Object;)V
+ Method visitIincInsn(II)V
+ Method visitTableSwitchInsn(IILorg/objectweb/asm/Label;[Lorg/objectweb/asm/Label;)V
+ Method visitLookupSwitchInsn(Lorg/objectweb/asm/Label;[I[Lorg/objectweb/asm/Label;)V
+ Method visitSwitchInsn(Lorg/objectweb/asm/Label;[Lorg/objectweb/asm/Label;)V
+ Method visitMultiANewArrayInsn(Ljava/lang/String;I)V
+ Method visitInsnAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitTryCatchBlock(Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;Ljava/lang/String;)V
+ Method visitTryCatchAnnotation(ILorg/objectweb/asm/TypePath;Ljava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitLocalVariable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Label;Lorg/objectweb/asm/Label;I)V
+ Method visitLocalVariableAnnotation(ILorg/objectweb/asm/TypePath;[Lorg/objectweb/asm/Label;[Lorg/objectweb/asm/Label;[ILjava/lang/String;Z)Lorg/objectweb/asm/AnnotationVisitor;
+ Method visitLineNumber(ILorg/objectweb/asm/Label;)V
+ Method visitMaxs(II)V
+ Method computeAllFrames()V
+ Method computeMaxStackAndLocal()V
+ Method visitEnd()V
+ Method addSuccessorToCurrentBasicBlock(ILorg/objectweb/asm/Label;)V
+ Method endCurrentBasicBlockWithNoSuccessor()V
+ Method visitFrameStart(III)I
+ Method visitAbstractType(II)V
+ Method visitFrameEnd()V
+ Method putFrame()V
+ Method putAbstractTypes(II)V
+ Method putFrameType(Ljava/lang/Object;)V
+ Method canCopyMethodAttributes(Lorg/objectweb/asm/ClassReader;IIZZIII)Z
+ Method computeMethodInfoSize()I
+ Method putMethodInfo(Lorg/objectweb/asm/ByteVector;)V
+ Method collectAttributePrototypes(Lorg/objectweb/asm/Attribute$Set;)V
+ Method ()V
+ File org/objectweb/asm/ModuleVisitor.class
+ Class org/objectweb/asm/ModuleVisitor
+ Method (I)V
+ Method (ILorg/objectweb/asm/ModuleVisitor;)V
+ Method visitMainClass(Ljava/lang/String;)V
+ Method visitPackage(Ljava/lang/String;)V
+ Method visitRequire(Ljava/lang/String;ILjava/lang/String;)V
+ Method visitExport(Ljava/lang/String;I[Ljava/lang/String;)V
+ Method visitOpen(Ljava/lang/String;I[Ljava/lang/String;)V
+ Method visitUse(Ljava/lang/String;)V
+ Method visitProvide(Ljava/lang/String;[Ljava/lang/String;)V
+ Method visitEnd()V
+ File org/objectweb/asm/ModuleWriter.class
+ Class org/objectweb/asm/ModuleWriter
+ Method (Lorg/objectweb/asm/SymbolTable;III)V
+ Method visitMainClass(Ljava/lang/String;)V
+ Method visitPackage(Ljava/lang/String;)V
+ Method visitRequire(Ljava/lang/String;ILjava/lang/String;)V
+ Method visitExport(Ljava/lang/String;I[Ljava/lang/String;)V
+ Method visitOpen(Ljava/lang/String;I[Ljava/lang/String;)V
+ Method visitUse(Ljava/lang/String;)V
+ Method visitProvide(Ljava/lang/String;[Ljava/lang/String;)V
+ Method visitEnd()V
+ Method getAttributeCount()I
+ Method computeAttributesSize()I
+ Method putAttributes(Lorg/objectweb/asm/ByteVector;)V
+ File org/objectweb/asm/Opcodes.class
+ Class org/objectweb/asm/Opcodes
+ Method ()V
+ File org/objectweb/asm/Symbol.class
+ Class org/objectweb/asm/Symbol
+ Method (IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
+ Method getArgumentsAndReturnSizes()I
+ File org/objectweb/asm/SymbolTable$Entry.class
+ Class org/objectweb/asm/SymbolTable$Entry
+ Method (IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;JI)V
+ Method (IILjava/lang/String;I)V
+ Method (IILjava/lang/String;JI)V
+ Method (IILjava/lang/String;Ljava/lang/String;I)V
+ Method (IIJI)V
+ File org/objectweb/asm/SymbolTable.class
+ Class org/objectweb/asm/SymbolTable
+ Method (Lorg/objectweb/asm/ClassWriter;)V
+ Method (Lorg/objectweb/asm/ClassWriter;Lorg/objectweb/asm/ClassReader;)V
+ Method getSource()Lorg/objectweb/asm/ClassReader;
+ Method getMajorVersion()I
+ Method getClassName()Ljava/lang/String;
+ Method setMajorVersionAndClassName(ILjava/lang/String;)I
+ Method getConstantPoolCount()I
+ Method getConstantPoolLength()I
+ Method putConstantPool(Lorg/objectweb/asm/ByteVector;)V
+ Method computeBootstrapMethodsSize()I
+ Method putBootstrapMethods(Lorg/objectweb/asm/ByteVector;)V
+ Method get(I)Lorg/objectweb/asm/SymbolTable$Entry;
+ Method put(Lorg/objectweb/asm/SymbolTable$Entry;)Lorg/objectweb/asm/SymbolTable$Entry;
+ Method add(Lorg/objectweb/asm/SymbolTable$Entry;)V
+ Method addConstant(Ljava/lang/Object;)Lorg/objectweb/asm/Symbol;
+ Method addConstantClass(Ljava/lang/String;)Lorg/objectweb/asm/Symbol;
+ Method addConstantFieldref(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/objectweb/asm/Symbol;
+ Method addConstantMethodref(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lorg/objectweb/asm/Symbol;
+ Method addConstantMemberReference(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/objectweb/asm/SymbolTable$Entry;
+ Method addConstantMemberReference(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+ Method addConstantString(Ljava/lang/String;)Lorg/objectweb/asm/Symbol;
+ Method addConstantInteger(I)Lorg/objectweb/asm/Symbol;
+ Method addConstantFloat(F)Lorg/objectweb/asm/Symbol;
+ Method addConstantInteger(II)Lorg/objectweb/asm/Symbol;
+ Method addConstantInteger(III)V
+ Method addConstantLong(J)Lorg/objectweb/asm/Symbol;
+ Method addConstantDouble(D)Lorg/objectweb/asm/Symbol;
+ Method addConstantLong(IJ)Lorg/objectweb/asm/Symbol;
+ Method addConstantLong(IIJ)V
+ Method addConstantNameAndType(Ljava/lang/String;Ljava/lang/String;)I
+ Method addConstantNameAndType(ILjava/lang/String;Ljava/lang/String;)V
+ Method addConstantUtf8(Ljava/lang/String;)I
+ Method addConstantUtf8(ILjava/lang/String;)V
+ Method addConstantMethodHandle(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lorg/objectweb/asm/Symbol;
+ Method addConstantMethodHandle(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+ Method addConstantMethodType(Ljava/lang/String;)Lorg/objectweb/asm/Symbol;
+ Method addConstantDynamic(Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)Lorg/objectweb/asm/Symbol;
+ Method addConstantInvokeDynamic(Ljava/lang/String;Ljava/lang/String;Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)Lorg/objectweb/asm/Symbol;
+ Method addConstantDynamicOrInvokeDynamicReference(ILjava/lang/String;Ljava/lang/String;I)Lorg/objectweb/asm/Symbol;
+ Method addConstantDynamicOrInvokeDynamicReference(IILjava/lang/String;Ljava/lang/String;I)V
+ Method addConstantModule(Ljava/lang/String;)Lorg/objectweb/asm/Symbol;
+ Method addConstantPackage(Ljava/lang/String;)Lorg/objectweb/asm/Symbol;
+ Method addConstantUtf8Reference(ILjava/lang/String;)Lorg/objectweb/asm/Symbol;
+ Method addConstantUtf8Reference(IILjava/lang/String;)V
+ Method addBootstrapMethod(Lorg/objectweb/asm/Handle;[Ljava/lang/Object;)Lorg/objectweb/asm/Symbol;
+ Method addBootstrapMethod(III)Lorg/objectweb/asm/Symbol;
+ Method getType(I)Lorg/objectweb/asm/Symbol;
+ Method addType(Ljava/lang/String;)I
+ Method addUninitializedType(Ljava/lang/String;I)I
+ Method addMergedType(II)I
+ Method addType(Lorg/objectweb/asm/SymbolTable$Entry;)I
+ Method hash(II)I
+ Method hash(IJ)I
+ Method hash(ILjava/lang/String;)I
+ Method hash(ILjava/lang/String;I)I
+ Method hash(ILjava/lang/String;Ljava/lang/String;)I
+ Method hash(ILjava/lang/String;Ljava/lang/String;I)I
+ Method hash(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
+ Method hash(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)I
+ File org/objectweb/asm/Type.class
+ Class org/objectweb/asm/Type
+ Method (ILjava/lang/String;II)V
+ Method getType(Ljava/lang/String;)Lorg/objectweb/asm/Type;
+ Method getObjectType(Ljava/lang/String;)Lorg/objectweb/asm/Type;
+ Method getMethodType(Ljava/lang/String;)Lorg/objectweb/asm/Type;
+ Method getMethodType(Lorg/objectweb/asm/Type;[Lorg/objectweb/asm/Type;)Lorg/objectweb/asm/Type;
+ Method getType(Ljava/lang/Class;)Lorg/objectweb/asm/Type;
+ Method getType(Ljava/lang/reflect/Constructor;)Lorg/objectweb/asm/Type;
+ Method getType(Ljava/lang/reflect/Method;)Lorg/objectweb/asm/Type;
+ Method getArgumentTypes(Ljava/lang/String;)[Lorg/objectweb/asm/Type;
+ Method getArgumentTypes(Ljava/lang/reflect/Method;)[Lorg/objectweb/asm/Type;
+ Method getReturnType(Ljava/lang/String;)Lorg/objectweb/asm/Type;
+ Method getReturnType(Ljava/lang/reflect/Method;)Lorg/objectweb/asm/Type;
+ Method getArgumentsAndReturnSizes(Ljava/lang/String;)I
+ Method getType(Ljava/lang/String;II)Lorg/objectweb/asm/Type;
+ Method getSort()I
+ Method getDimensions()I
+ Method getElementType()Lorg/objectweb/asm/Type;
+ Method getClassName()Ljava/lang/String;
+ Method getInternalName()Ljava/lang/String;
+ Method getArgumentTypes()[Lorg/objectweb/asm/Type;
+ Method getReturnType()Lorg/objectweb/asm/Type;
+ Method getArgumentsAndReturnSizes()I
+ Method getDescriptor()Ljava/lang/String;
+ Method getMethodDescriptor(Lorg/objectweb/asm/Type;[Lorg/objectweb/asm/Type;)Ljava/lang/String;
+ Method appendDescriptor(Ljava/lang/StringBuilder;)V
+ Method getInternalName(Ljava/lang/Class;)Ljava/lang/String;
+ Method getDescriptor(Ljava/lang/Class;)Ljava/lang/String;
+ Method getConstructorDescriptor(Ljava/lang/reflect/Constructor;)Ljava/lang/String;
+ Method getMethodDescriptor(Ljava/lang/reflect/Method;)Ljava/lang/String;
+ Method appendDescriptor(Ljava/lang/StringBuilder;Ljava/lang/Class;)V
+ Method getSize()I
+ Method getOpcode(I)I
+ Method equals(Ljava/lang/Object;)Z
+ Method hashCode()I
+ Method toString()Ljava/lang/String;
+ Method ()V
+ File org/objectweb/asm/TypePath.class
+ Class org/objectweb/asm/TypePath
+ Method ([BI)V
+ Method getLength()I
+ Method getStep(I)I
+ Method getStepArgument(I)I
+ Method fromString(Ljava/lang/String;)Lorg/objectweb/asm/TypePath;
+ Method toString()Ljava/lang/String;
+ Method put(Lorg/objectweb/asm/TypePath;Lorg/objectweb/asm/ByteVector;)V
+ File org/objectweb/asm/TypeReference.class
+ Class org/objectweb/asm/TypeReference
+ Method (I)V
+ Method newTypeReference(I)Lorg/objectweb/asm/TypeReference;
+ Method newTypeParameterReference(II)Lorg/objectweb/asm/TypeReference;
+ Method newTypeParameterBoundReference(III)Lorg/objectweb/asm/TypeReference;
+ Method newSuperTypeReference(I)Lorg/objectweb/asm/TypeReference;
+ Method newFormalParameterReference(I)Lorg/objectweb/asm/TypeReference;
+ Method newExceptionReference(I)Lorg/objectweb/asm/TypeReference;
+ Method newTryCatchReference(I)Lorg/objectweb/asm/TypeReference;
+ Method newTypeArgumentReference(II)Lorg/objectweb/asm/TypeReference;
+ Method getSort()I
+ Method getTypeParameterIndex()I
+ Method getTypeParameterBoundIndex()I
+ Method getSuperTypeIndex()I
+ Method getFormalParameterIndex()I
+ Method getExceptionIndex()I
+ Method getTryCatchBlockIndex()I
+ Method getTypeArgumentIndex()I
+ Method getValue()I
+ Method putTarget(ILorg/objectweb/asm/ByteVector;)V
+ File org/objectweb/asm/signature/SignatureReader.class
+ Class org/objectweb/asm/signature/SignatureReader
+ Method (Ljava/lang/String;)V
+ Method accept(Lorg/objectweb/asm/signature/SignatureVisitor;)V
+ Method acceptType(Lorg/objectweb/asm/signature/SignatureVisitor;)V
+ Method parseType(Ljava/lang/String;ILorg/objectweb/asm/signature/SignatureVisitor;)I
+ File org/objectweb/asm/signature/SignatureVisitor.class
+ Class org/objectweb/asm/signature/SignatureVisitor
+ Method (I)V
+ Method visitFormalTypeParameter(Ljava/lang/String;)V
+ Method visitClassBound()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitInterfaceBound()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitSuperclass()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitInterface()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitParameterType()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitReturnType()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitExceptionType()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitBaseType(C)V
+ Method visitTypeVariable(Ljava/lang/String;)V
+ Method visitArrayType()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitClassType(Ljava/lang/String;)V
+ Method visitInnerClassType(Ljava/lang/String;)V
+ Method visitTypeArgument()V
+ Method visitTypeArgument(C)Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitEnd()V
+ File org/objectweb/asm/signature/SignatureWriter.class
+ Class org/objectweb/asm/signature/SignatureWriter
+ Method ()V
+ Method visitFormalTypeParameter(Ljava/lang/String;)V
+ Method visitClassBound()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitInterfaceBound()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitSuperclass()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitInterface()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitParameterType()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitReturnType()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitExceptionType()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitBaseType(C)V
+ Method visitTypeVariable(Ljava/lang/String;)V
+ Method visitArrayType()Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitClassType(Ljava/lang/String;)V
+ Method visitInnerClassType(Ljava/lang/String;)V
+ Method visitTypeArgument()V
+ Method visitTypeArgument(C)Lorg/objectweb/asm/signature/SignatureVisitor;
+ Method visitEnd()V
+ Method toString()Ljava/lang/String;
+ Method endFormals()V
+ Method endArguments()V
+=== STATISTICS ===
+classes: 36
+methods: 506
+instructions: 23388
+invoke instructions: 2388
+branch instructions: 1313
+OPCODE MNEMONIC COUNT
+0 NOP 0
+1 ACONST_NULL 123
+2 ICONST_M1 80
+3 ICONST_0 483
+4 ICONST_1 356
+5 ICONST_2 213
+6 ICONST_3 63
+7 ICONST_4 84
+8 ICONST_5 13
+9 LCONST_0 4
+10 LCONST_1 0
+11 FCONST_0 0
+12 FCONST_1 0
+13 FCONST_2 0
+14 DCONST_0 0
+15 DCONST_1 0
+16 BIPUSH 646
+17 SIPUSH 227
+18 LDC 499
+19 LDC_W 0
+20 LDC2_W 0
+21 ILOAD 2516
+22 LLOAD 20
+23 FLOAD 2
+24 DLOAD 2
+25 ALOAD 5255
+26 ILOAD_0 0
+27 ILOAD_1 0
+28 ILOAD_2 0
+29 ILOAD_3 0
+30 LLOAD_0 0
+31 LLOAD_1 0
+32 LLOAD_2 0
+33 LLOAD_3 0
+34 FLOAD_0 0
+35 FLOAD_1 0
+36 FLOAD_2 0
+37 FLOAD_3 0
+38 DLOAD_0 0
+39 DLOAD_1 0
+40 DLOAD_2 0
+41 DLOAD_3 0
+42 ALOAD_0 0
+43 ALOAD_1 0
+44 ALOAD_2 0
+45 ALOAD_3 0
+46 IALOAD 88
+47 LALOAD 1
+48 FALOAD 1
+49 DALOAD 1
+50 AALOAD 71
+51 BALOAD 45
+52 CALOAD 1
+53 SALOAD 1
+54 ISTORE 879
+55 LSTORE 4
+56 FSTORE 1
+57 DSTORE 1
+58 ASTORE 424
+59 ISTORE_0 0
+60 ISTORE_1 0
+61 ISTORE_2 0
+62 ISTORE_3 0
+63 LSTORE_0 0
+64 LSTORE_1 0
+65 LSTORE_2 0
+66 LSTORE_3 0
+67 FSTORE_0 0
+68 FSTORE_1 0
+69 FSTORE_2 0
+70 FSTORE_3 0
+71 DSTORE_0 0
+72 DSTORE_1 0
+73 DSTORE_2 0
+74 DSTORE_3 0
+75 ASTORE_0 0
+76 ASTORE_1 0
+77 ASTORE_2 0
+78 ASTORE_3 0
+79 IASTORE 241
+80 LASTORE 1
+81 FASTORE 1
+82 DASTORE 1
+83 AASTORE 41
+84 BASTORE 55
+85 CASTORE 4
+86 SASTORE 1
+87 POP 317
+88 POP2 0
+89 DUP 500
+90 DUP_X1 37
+91 DUP_X2 5
+92 DUP2 1
+93 DUP2_X1 0
+94 DUP2_X2 0
+95 SWAP 0
+96 IADD 525
+97 LADD 0
+98 FADD 0
+99 DADD 0
+100 ISUB 101
+101 LSUB 0
+102 FSUB 0
+103 DSUB 0
+104 IMUL 39
+105 LMUL 0
+106 FMUL 0
+107 DMUL 0
+108 IDIV 3
+109 LDIV 0
+110 FDIV 0
+111 DDIV 0
+112 IREM 11
+113 LREM 0
+114 FREM 0
+115 DREM 0
+116 INEG 1
+117 LNEG 0
+118 FNEG 0
+119 DNEG 0
+120 ISHL 25
+121 LSHL 2
+122 ISHR 19
+123 LSHR 0
+124 IUSHR 30
+125 LUSHR 2
+126 IAND 182
+127 LAND 1
+128 IOR 79
+129 LOR 2
+130 IXOR 12
+131 LXOR 0
+132 IINC 477
+133 I2L 17
+134 I2F 0
+135 I2D 0
+136 L2I 6
+137 L2F 0
+138 L2D 0
+139 F2I 0
+140 F2L 0
+141 F2D 0
+142 D2I 0
+143 D2L 0
+144 D2F 0
+145 I2B 53
+146 I2C 5
+147 I2S 31
+148 LCMP 6
+149 FCMPL 0
+150 FCMPG 0
+151 DCMPL 0
+152 DCMPG 0
+153 IFEQ 264
+154 IFNE 68
+155 IFLT 4
+156 IFGE 1
+157 IFGT 0
+158 IFLE 73
+159 IF_ICMPEQ 108
+160 IF_ICMPNE 194
+161 IF_ICMPLT 30
+162 IF_ICMPGE 148
+163 IF_ICMPGT 16
+164 IF_ICMPLE 36
+165 IF_ACMPEQ 11
+166 IF_ACMPNE 27
+167 GOTO 718
+168 JSR 0
+169 RET 0
+170 TABLESWITCH 28
+171 LOOKUPSWITCH 5
+172 IRETURN 176
+173 LRETURN 1
+174 FRETURN 0
+175 DRETURN 0
+176 ARETURN 267
+177 RETURN 241
+178 GETSTATIC 72
+179 PUTSTATIC 18
+180 GETFIELD 2211
+181 PUTFIELD 473
+182 INVOKEVIRTUAL 1609
+183 INVOKESPECIAL 630
+184 INVOKESTATIC 149
+185 INVOKEINTERFACE 0
+186 INVOKEDYNAMIC 0
+187 NEW 225
+188 NEWARRAY 46
+189 ANEWARRAY 30
+190 ARRAYLENGTH 111
+191 ATHROW 68
+192 CHECKCAST 55
+193 INSTANCEOF 37
+194 MONITORENTER 0
+195 MONITOREXIT 0
+196 WIDE 0
+197 MULTIANEWARRAY 0
+198 IFNULL 243
+199 IFNONNULL 57
+200 0
+201 0
+202 0
+203 0
+204 0
+205 0
+206 0
+207 0
+208 0
+209 0
+210 0
+211 0
+212 0
+213 0
+214 0
+215 0
+216 0
+217 0
+218 0
+219 0
+220 0
+221 0
+222 0
+223 0
+224 0
+225 0
+226 0
+227 0
+228 0
+229 0
+230 0
+231 0
+232 0
+233 0
+234 0
+235 0
+236 0
+237 0
+238 0
+239 0
+240 0
+241 0
+242 0
+243 0
+244 0
+245 0
+246 0
+247 0
+248 0
+249 0
+250 0
+251 0
+252 0
+253 0
+254 0
+255 0
diff --git a/test/test.sh b/test/test.sh
new file mode 100755
index 0000000..fec2cd9
--- /dev/null
+++ b/test/test.sh
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+echo Testing...
+
+# Remove actual output from prior run (if any)
+rm -f asm-6.2.1.jar-actual.output.txt
+# There should be only one build folder, with the name of this IntelliJ project. Get that name.
+OUT=`ls ../out/production`
+# Run the program, storing stdout in a file
+java -cp ../out/production/${OUT}:../lib/asm-7.1.jar:../lib/asm-tree-7.1.jar:../lib/asm-util-7.1.jar Analyzer asm-6.2.1.jar > asm-6.2.1.jar-actual.output.txt
+# Compare actual to expected output
+diff asm-6.2.1.jar-actual.output.txt asm-6.2.1.jar-expected.output.txt
+RESULT=$?
+# If actual output differs from expected output, print "failed"
+if [ ${RESULT} -eq 0 ]; then
+ echo passed
+else
+ echo failed
+fi