From 67e182a0a1c1d59b5fa107a42ba3bacdc7255eba Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Fri, 15 Dec 2017 17:45:13 +0000 Subject: Revert "Merge remote-tracking branch 'aosp/upstream-master' into desugar" This reverts commit 28068806fa84995d3bd0f9aa448058c1d55cce36. Reason for revert: Caused "Too many open files" errors. Bug: 70415451 Change-Id: I2186e7eb5dd1501fe1c1c9c2f1fb1f1b6df2cc24 --- .../android/desugar/BytecodeTypeInference.java | 138 ++--- .../build/android/desugar/LambdaClassMaker.java | 37 +- .../android/desugar/TryWithResourcesRewriter.java | 27 +- .../build/android/desugar/ByteCodeTypePrinter.java | 34 +- .../desugar/BytecodeTypeInferenceTest.golden.txt | 627 +-------------------- .../android/desugar/BytecodeTypeInferenceTest.java | 41 +- .../test_subjects.jar | Bin 3594 -> 3361 bytes .../testsubjects/TestSubject.java | 18 - 8 files changed, 92 insertions(+), 830 deletions(-) diff --git a/java/com/google/devtools/build/android/desugar/BytecodeTypeInference.java b/java/com/google/devtools/build/android/desugar/BytecodeTypeInference.java index 783069f..777a4ab 100644 --- a/java/com/google/devtools/build/android/desugar/BytecodeTypeInference.java +++ b/java/com/google/devtools/build/android/desugar/BytecodeTypeInference.java @@ -14,14 +14,12 @@ package com.google.devtools.build.android.desugar; import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.base.Preconditions.checkNotNull; import static com.google.common.base.Preconditions.checkState; import com.google.auto.value.AutoValue; import com.google.common.collect.ImmutableList; import java.util.ArrayList; -import java.util.Optional; -import javax.annotation.Nullable; +import java.util.HashMap; import org.objectweb.asm.Handle; import org.objectweb.asm.Label; import org.objectweb.asm.MethodVisitor; @@ -43,6 +41,11 @@ public final class BytecodeTypeInference extends MethodVisitor { private FrameInfo previousFrame; /** For debugging purpose. */ private final String methodSignature; + /** + * Stores mapping from "uninitialized" value to concrete value. This is for the "new" instruction. + */ + private final HashMap uninitializedToConcreteTypeMap = + new HashMap<>(); public BytecodeTypeInference(int access, String owner, String name, String methodDescriptor) { super(Opcodes.ASM6); @@ -78,10 +81,6 @@ public final class BytecodeTypeInference extends MethodVisitor { return operandStack.toString(); } - public String getLocalsAsString() { - return localVariableSlots.toString(); - } - @Override public void visitInsn(int opcode) { switch (opcode) { @@ -477,7 +476,8 @@ public final class BytecodeTypeInference extends MethodVisitor { int argumentSize = (Type.getArgumentsAndReturnSizes(desc) >> 2); InferredType receiverType = getTypeOfOperandFromTop(argumentSize - 1); if (receiverType.isUninitialized()) { - InferredType realType = InferredType.createNonUninitializedType('L' + owner + ';'); + InferredType realType = InferredType.create('L' + owner + ';'); + uninitializedToConcreteTypeMap.put(receiverType, realType); replaceUninitializedTypeInStack(receiverType, realType); } } @@ -642,6 +642,7 @@ public final class BytecodeTypeInference extends MethodVisitor { operandStack.addAll(previousFrame.stack()); localVariableSlots.clear(); localVariableSlots.addAll(previousFrame.locals()); + super.visitFrame(type, nLocal, local, nStack, stack); } @@ -671,7 +672,7 @@ public final class BytecodeTypeInference extends MethodVisitor { checkArgument(oldType.isUninitialized(), "The old type is NOT uninitialized. %s", oldType); for (int i = 0, size = operandStack.size(); i < size; ++i) { InferredType type = operandStack.get(i); - if (type.equals(oldType)) { + if (type == oldType) { operandStack.set(i, newType); } } @@ -702,7 +703,7 @@ public final class BytecodeTypeInference extends MethodVisitor { break; case 'L': case '[': - push(InferredType.createNonUninitializedType(desc.substring(index))); + push(InferredType.create(desc.substring(index))); break; default: throw new RuntimeException("Unhandled type: " + desc); @@ -770,6 +771,12 @@ public final class BytecodeTypeInference extends MethodVisitor { return lastPopped; } + private static ImmutableList removeBackFromList( + ImmutableList list, int countToRemove) { + int newSize = list.size() - countToRemove; + return list.subList(0, newSize); + } + /** * Create the types of local variables at the very beginning of the method with the information of * the declaring class and the method descriptor. @@ -780,7 +787,7 @@ public final class BytecodeTypeInference extends MethodVisitor { if (!BitFlags.isSet(access, Opcodes.ACC_STATIC)) { // Instance method, and this is the receiver - types.add(InferredType.createNonUninitializedType(convertToDescriptor(ownerClass))); + types.add(InferredType.create(convertToDescriptor(ownerClass))); } Type[] argumentTypes = Type.getArgumentTypes(methodDescriptor); for (Type argumentType : argumentTypes) { @@ -805,7 +812,7 @@ public final class BytecodeTypeInference extends MethodVisitor { break; case Type.ARRAY: case Type.OBJECT: - types.add(InferredType.createNonUninitializedType(argumentType.getDescriptor())); + types.add(InferredType.create(argumentType.getDescriptor())); break; default: throw new RuntimeException( @@ -821,28 +828,6 @@ public final class BytecodeTypeInference extends MethodVisitor { return types; } - private static ImmutableList removeBackFromList( - ImmutableList list, int countToRemove) { - int origSize = list.size(); - int index = origSize - 1; - - while (index >= 0 && countToRemove > 0) { - InferredType type = list.get(index); - if (type.equals(InferredType.TOP) && index > 0 && list.get(index - 1).isCategory2()) { - --index; // A category 2 takes two slots. - } - --index; // Eat this local variable. - --countToRemove; - } - checkState( - countToRemove == 0, - "countToRemove is %s but not 0. index=%s, list=%s", - countToRemove, - index, - list); - return list.subList(0, index + 1); - } - private ImmutableList appendArrayToList( ImmutableList list, int size, Object[] array) { ImmutableList.Builder builder = ImmutableList.builder(); @@ -876,13 +861,13 @@ public final class BytecodeTypeInference extends MethodVisitor { } else if (typeInStackMapFrame instanceof String) { String referenceTypeName = (String) typeInStackMapFrame; if (referenceTypeName.charAt(0) == '[') { - return InferredType.createNonUninitializedType(referenceTypeName); + return InferredType.create(referenceTypeName); } else { - return InferredType.createNonUninitializedType('L' + referenceTypeName + ';'); + return InferredType.create('L' + referenceTypeName + ';'); } } else if (typeInStackMapFrame instanceof Label) { Label label = (Label) typeInStackMapFrame; - return InferredType.createUninitializedType(label); + return InferredType.createUninitialized(label.getOffset()); } else { throw new RuntimeException( "Cannot reach here. Unhandled element: value=" @@ -926,45 +911,26 @@ public final class BytecodeTypeInference extends MethodVisitor { public static final String UNINITIALIZED_PREFIX = "UNINIT@"; public static final InferredType BOOLEAN = - new AutoValue_BytecodeTypeInference_InferredType("Z", /*uninitializationLabel=*/ null); - public static final InferredType BYTE = - new AutoValue_BytecodeTypeInference_InferredType("B", /*uninitializationLabel=*/ null); - public static final InferredType INT = - new AutoValue_BytecodeTypeInference_InferredType("I", /*uninitializationLabel=*/ null); - public static final InferredType FLOAT = - new AutoValue_BytecodeTypeInference_InferredType("F", /*uninitializationLabel=*/ null); - public static final InferredType LONG = - new AutoValue_BytecodeTypeInference_InferredType("J", /*uninitializationLabel=*/ null); - public static final InferredType DOUBLE = - new AutoValue_BytecodeTypeInference_InferredType("D", /*uninitializationLabel=*/ null); + new AutoValue_BytecodeTypeInference_InferredType("Z"); + public static final InferredType BYTE = new AutoValue_BytecodeTypeInference_InferredType("B"); + public static final InferredType INT = new AutoValue_BytecodeTypeInference_InferredType("I"); + public static final InferredType FLOAT = new AutoValue_BytecodeTypeInference_InferredType("F"); + public static final InferredType LONG = new AutoValue_BytecodeTypeInference_InferredType("J"); + public static final InferredType DOUBLE = new AutoValue_BytecodeTypeInference_InferredType("D"); /** Not a real value. */ - public static final InferredType TOP = - new AutoValue_BytecodeTypeInference_InferredType("TOP", /*uninitializationLabel=*/ null); + public static final InferredType TOP = new AutoValue_BytecodeTypeInference_InferredType("TOP"); /** The value NULL */ public static final InferredType NULL = - new AutoValue_BytecodeTypeInference_InferredType("NULL", /*uninitializationLabel=*/ null); + new AutoValue_BytecodeTypeInference_InferredType("NULL"); public static final InferredType UNINITIALIZED_THIS = - new AutoValue_BytecodeTypeInference_InferredType( - "UNINITIALIZED_THIS", /*uninitializationLabel=*/ null); + new AutoValue_BytecodeTypeInference_InferredType("UNINITIALIZED_THIS"); - /** - * Create a type for a value. This method is not intended to be called outside of this class. - */ - private static InferredType create(String descriptor, @Nullable Label uninitializationLabel) { - if (UNINITIALIZED_PREFIX.equals(descriptor)) { - return new AutoValue_BytecodeTypeInference_InferredType( - UNINITIALIZED_PREFIX, checkNotNull(uninitializationLabel)); - } - checkArgument( - uninitializationLabel == null, - "The uninitializationLabel should be null for non-uninitialized value. %s", - descriptor); + static InferredType create(String descriptor) { char firstChar = descriptor.charAt(0); - if (firstChar == 'L' || firstChar == '[') { - // Reference, array. - return new AutoValue_BytecodeTypeInference_InferredType( - descriptor, /*uninitializationLabel=*/ null); + if (firstChar == 'L' || firstChar == '[' || descriptor.startsWith(UNINITIALIZED_PREFIX)) { + // Reference, array, or uninitialized values. + return new AutoValue_BytecodeTypeInference_InferredType(descriptor); } switch (descriptor) { case "Z": @@ -990,23 +956,12 @@ public final class BytecodeTypeInference extends MethodVisitor { } } - /** Creates all types except UNINITIALIZED. This method can also create UNINTIALIZED_THIS. */ - static InferredType createNonUninitializedType(String descriptor) { - return create(descriptor, /*uninitializationLabel=*/ null); - } - - /** Create a type for an UNINITIALIZED value. The uninitializationLabel is generated by ASM. */ - static InferredType createUninitializedType(Label uninitializationLabel) { - return create(UNINITIALIZED_PREFIX, uninitializationLabel); + /** Create a type for uninitialized value. The label is generated by ASM. */ + static InferredType createUninitialized(int label) { + return create(UNINITIALIZED_PREFIX + label); } abstract String descriptor(); - /** - * The label may be null. This field is meaningful if the current type is "UNINITIALIZED". For - * other types, this field is null. - */ - @Nullable - abstract Label uninitializationLabel(); @Override public String toString() { @@ -1023,7 +978,7 @@ public final class BytecodeTypeInference extends MethodVisitor { public InferredType getElementTypeIfArrayOrThrow() { String descriptor = descriptor(); checkState(descriptor.charAt(0) == '[', "This type %s is not an array.", this); - return createNonUninitializedType(descriptor.substring(1)); + return create(descriptor.substring(1)); } /** Is an uninitialized value? */ @@ -1037,16 +992,17 @@ public final class BytecodeTypeInference extends MethodVisitor { } /** - * If this type is a reference type, then return the internal name. Otherwise, returns empty. + * If this type is a reference type, then return the internal name. Otherwise, throw an + * exception. */ - public Optional getInternalName() { + public String getInternalNameOrThrow() { String descriptor = descriptor(); int length = descriptor.length(); - if (length > 0 && descriptor.charAt(0) == 'L' && descriptor.charAt(length - 1) == ';') { - return Optional.of(descriptor.substring(1, length - 1)); - } else { - return Optional.empty(); - } + checkState( + descriptor.charAt(0) == 'L' && descriptor.charAt(length - 1) == ';', + "The type is expected to be either a class or an interface: %s", + descriptor); + return descriptor.substring(1, length - 1); } } } diff --git a/java/com/google/devtools/build/android/desugar/LambdaClassMaker.java b/java/com/google/devtools/build/android/desugar/LambdaClassMaker.java index 1f240ef..beaeb03 100644 --- a/java/com/google/devtools/build/android/desugar/LambdaClassMaker.java +++ b/java/com/google/devtools/build/android/desugar/LambdaClassMaker.java @@ -14,19 +14,18 @@ package com.google.devtools.build.android.desugar; import static com.google.common.base.Preconditions.checkArgument; -import static com.google.common.collect.Iterables.getOnlyElement; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Iterators; import java.io.IOException; import java.lang.invoke.MethodHandle; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; -import java.util.HashSet; import java.util.LinkedHashMap; import java.util.Map; -import java.util.Set; +import java.util.function.Predicate; +import java.util.stream.Stream; class LambdaClassMaker { @@ -34,7 +33,6 @@ class LambdaClassMaker { private final Path rootDirectory; private final Map generatedClasses = new LinkedHashMap<>(); - private final Set existingPaths = new HashSet<>(); public LambdaClassMaker(Path rootDirectory) { checkArgument( @@ -44,9 +42,7 @@ class LambdaClassMaker { public void generateLambdaClass(String invokerInternalName, LambdaInfo lambdaInfo, MethodHandle bootstrapMethod, ArrayList bsmArgs) throws IOException { - // Invoking the bootstrap method will dump the generated class. Ignore any pre-existing - // matching files, which can come from desugar's implementation using classes being desugared. - existingPaths.addAll(findUnprocessed(invokerInternalName + "$$Lambda$")); + // Invoking the bootstrap method will dump the generated class try { bootstrapMethod.invokeWithArguments(bsmArgs); } catch (Throwable e) { @@ -54,9 +50,8 @@ class LambdaClassMaker { + invokerInternalName + " using " + bootstrapMethod + " with arguments " + bsmArgs, e); } - Path generatedClassFile = getOnlyElement(findUnprocessed(invokerInternalName + "$$Lambda$")); + Path generatedClassFile = findOnlyUnprocessed(invokerInternalName + "$$Lambda$"); generatedClasses.put(generatedClassFile, lambdaInfo); - existingPaths.add(generatedClassFile); } /** @@ -69,7 +64,7 @@ class LambdaClassMaker { return result; } - private ImmutableList findUnprocessed(String pathPrefix) throws IOException { + private Path findOnlyUnprocessed(String pathPrefix) throws IOException { // pathPrefix is an internal class name prefix containing '/', but paths obtained on Windows // will not contain '/' and searches will fail. So, construct an absolute path from the given // string and use its string representation to find the file we need regardless of host @@ -77,14 +72,18 @@ class LambdaClassMaker { Path rootPathPrefix = rootDirectory.resolve(pathPrefix); final String rootPathPrefixStr = rootPathPrefix.toString(); - if (!Files.exists(rootPathPrefix.getParent())) { - return ImmutableList.of(); + // TODO(bazel-team): This could be much nicer with lambdas + try (Stream paths = + Files.list(rootPathPrefix.getParent()) + .filter( + new Predicate() { + @Override + public boolean test(Path path) { + return path.toString().startsWith(rootPathPrefixStr) + && !generatedClasses.containsKey(path); + } + })) { + return Iterators.getOnlyElement(paths.iterator()); } - return Files.list(rootPathPrefix.getParent()) - .filter( - path -> - path.toString().startsWith(rootPathPrefixStr) - && !existingPaths.contains(path)) - .collect(ImmutableList.toImmutableList()); } } diff --git a/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java b/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java index 8e6d6d5..e4d4da5 100644 --- a/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java +++ b/java/com/google/devtools/build/android/desugar/TryWithResourcesRewriter.java @@ -31,7 +31,6 @@ import com.google.common.collect.ImmutableSet; import com.google.devtools.build.android.desugar.BytecodeTypeInference.InferredType; import java.util.Collections; import java.util.LinkedHashSet; -import java.util.Optional; import java.util.Set; import java.util.concurrent.atomic.AtomicInteger; import javax.annotation.Nullable; @@ -292,16 +291,10 @@ public class TryWithResourcesRewriter extends ClassVisitor { // Check the exception type. InferredType exceptionClass = typeInference.getTypeOfOperandFromTop(1); if (!exceptionClass.isNull()) { - Optional exceptionClassInternalName = exceptionClass.getInternalName(); - checkState( - exceptionClassInternalName.isPresent(), - "The exception %s is not a reference type in %s.%s", - exceptionClass, - internalName, - methodSignature); + String exceptionClassInternalName = exceptionClass.getInternalNameOrThrow(); checkState( isAssignableFrom( - "java.lang.Throwable", exceptionClassInternalName.get().replace('/', '.')), + "java.lang.Throwable", exceptionClassInternalName.replace('/', '.')), "The exception type %s in %s.%s should be a subclass of java.lang.Throwable.", exceptionClassInternalName, internalName, @@ -309,26 +302,20 @@ public class TryWithResourcesRewriter extends ClassVisitor { } } - InferredType resourceType = typeInference.getTypeOfOperandFromTop(0); - Optional resourceClassInternalName = resourceType.getInternalName(); - checkState( - resourceClassInternalName.isPresent(), - "The resource class %s is not a reference type in %s.%s", - resourceType, - internalName, - methodSignature); + String resourceClassInternalName = + typeInference.getTypeOfOperandFromTop(0).getInternalNameOrThrow(); checkState( isAssignableFrom( - "java.lang.AutoCloseable", resourceClassInternalName.get().replace('/', '.')), + "java.lang.AutoCloseable", resourceClassInternalName.replace('/', '.')), "The resource type should be a subclass of java.lang.AutoCloseable: %s", resourceClassInternalName); - resourceTypeInternalNames.add(resourceClassInternalName.get()); + resourceTypeInternalNames.add(resourceClassInternalName); super.visitMethodInsn( opcode, owner, "$closeResource", - "(Ljava/lang/Throwable;L" + resourceClassInternalName.get() + ";)V", + "(Ljava/lang/Throwable;L" + resourceClassInternalName + ";)V", itf); return; } diff --git a/test/java/com/google/devtools/build/android/desugar/ByteCodeTypePrinter.java b/test/java/com/google/devtools/build/android/desugar/ByteCodeTypePrinter.java index d58d002..fefc599 100644 --- a/test/java/com/google/devtools/build/android/desugar/ByteCodeTypePrinter.java +++ b/test/java/com/google/devtools/build/android/desugar/ByteCodeTypePrinter.java @@ -20,7 +20,6 @@ import java.io.InputStream; import java.io.PrintWriter; import java.nio.file.Files; import java.nio.file.Path; -import java.util.Comparator; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import org.objectweb.asm.ClassReader; @@ -54,7 +53,7 @@ public class ByteCodeTypePrinter { private static ImmutableList getSortedClassEntriess(ZipFile jar) { return jar.stream() .filter(entry -> entry.getName().endsWith(".class")) - .sorted(Comparator.comparing(ZipEntry::getName)) + .sorted() .collect(ImmutableList.toImmutableList()); } @@ -117,106 +116,105 @@ public class ByteCodeTypePrinter { this.printWriter = printWriter; } - private void printTypeOfOperandStack() { + private void printTypeOfOperandStackTop() { printer.print(" |__STACK: " + inference.getOperandStackAsString() + "\n"); - printer.print(" |__LOCAL: " + inference.getLocalsAsString() + "\n"); } @Override public void visitIntInsn(int opcode, int operand) { printer.visitIntInsn(opcode, operand); - printTypeOfOperandStack(); + printTypeOfOperandStackTop(); super.visitIntInsn(opcode, operand); } @Override public void visitInsn(int opcode) { printer.visitInsn(opcode); - printTypeOfOperandStack(); + printTypeOfOperandStackTop(); super.visitInsn(opcode); } @Override public void visitMultiANewArrayInsn(String desc, int dims) { printer.visitMultiANewArrayInsn(desc, dims); - printTypeOfOperandStack(); + printTypeOfOperandStackTop(); super.visitMultiANewArrayInsn(desc, dims); } @Override public void visitLookupSwitchInsn(Label dflt, int[] keys, Label[] labels) { printer.visitLookupSwitchInsn(dflt, keys, labels); - printTypeOfOperandStack(); + printTypeOfOperandStackTop(); super.visitLookupSwitchInsn(dflt, keys, labels); } @Override public void visitTableSwitchInsn(int min, int max, Label dflt, Label... labels) { printer.visitTableSwitchInsn(min, max, dflt, labels); - printTypeOfOperandStack(); + printTypeOfOperandStackTop(); super.visitTableSwitchInsn(min, max, dflt, labels); } @Override public void visitIincInsn(int var, int increment) { printer.visitIincInsn(var, increment); - printTypeOfOperandStack(); + printTypeOfOperandStackTop(); super.visitIincInsn(var, increment); } @Override public void visitLdcInsn(Object cst) { printer.visitLdcInsn(cst); - printTypeOfOperandStack(); + printTypeOfOperandStackTop(); super.visitLdcInsn(cst); } @Override public void visitJumpInsn(int opcode, Label label) { printer.visitJumpInsn(opcode, label); - printTypeOfOperandStack(); + printTypeOfOperandStackTop(); super.visitJumpInsn(opcode, label); } @Override public void visitInvokeDynamicInsn(String name, String desc, Handle bsm, Object... bsmArgs) { printer.visitInvokeDynamicInsn(name, desc, bsm, bsmArgs); - printTypeOfOperandStack(); + printTypeOfOperandStackTop(); super.visitInvokeDynamicInsn(name, desc, bsm, bsmArgs); } @Override public void visitMethodInsn(int opcode, String owner, String name, String desc, boolean itf) { printer.visitMethodInsn(opcode, owner, name, desc, itf); - printTypeOfOperandStack(); + printTypeOfOperandStackTop(); super.visitMethodInsn(opcode, owner, name, desc, itf); } @Override public void visitMethodInsn(int opcode, String owner, String name, String desc) { printer.visitMethodInsn(opcode, owner, name, desc); - printTypeOfOperandStack(); + printTypeOfOperandStackTop(); super.visitMethodInsn(opcode, owner, name, desc); } @Override public void visitFieldInsn(int opcode, String owner, String name, String desc) { printer.visitFieldInsn(opcode, owner, name, desc); - printTypeOfOperandStack(); + printTypeOfOperandStackTop(); super.visitFieldInsn(opcode, owner, name, desc); } @Override public void visitTypeInsn(int opcode, String type) { printer.visitTypeInsn(opcode, type); - printTypeOfOperandStack(); + printTypeOfOperandStackTop(); super.visitTypeInsn(opcode, type); } @Override public void visitVarInsn(int opcode, int var) { printer.visitVarInsn(opcode, var); - printTypeOfOperandStack(); + printTypeOfOperandStackTop(); super.visitVarInsn(opcode, var); } diff --git a/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.golden.txt b/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.golden.txt index dabfe14..722c2ad 100644 --- a/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.golden.txt +++ b/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.golden.txt @@ -3,1793 +3,1168 @@ Method L0 ALOAD 0 |__STACK: [Ltestsubjects/TestSubject;] - |__LOCAL: [Ltestsubjects/TestSubject;] INVOKESPECIAL java/lang/Object. ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;] RETURN |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;] Method catchTest L0 ALOAD 0 |__STACK: [Ljava/lang/Object;] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;] INSTANCEOF java/lang/String |__STACK: [I] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;] IFNE L1 |__STACK: [] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;] L2 GETSTATIC testsubjects/TestSubject.VALUE_ONE : I |__STACK: [I] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;] IRETURN |__STACK: [] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;] L1 FRAME SAME ALOAD 0 |__STACK: [Ljava/lang/Object;] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;] CHECKCAST java/lang/String |__STACK: [Ljava/lang/String;] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;] INVOKESTATIC java/util/regex/Pattern.compile (Ljava/lang/String;)Ljava/util/regex/Pattern; |__STACK: [Ljava/util/regex/Pattern;] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;] POP |__STACK: [] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;] L3 GOTO L4 |__STACK: [] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;] L5 FRAME SAME1 java/util/regex/PatternSyntaxException ASTORE 2 |__STACK: [] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;, Ljava/util/regex/PatternSyntaxException;] L6 GETSTATIC testsubjects/TestSubject.VALUE_TWO : I |__STACK: [I] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;, Ljava/util/regex/PatternSyntaxException;] IRETURN |__STACK: [] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;, Ljava/util/regex/PatternSyntaxException;] L4 FRAME SAME GETSTATIC testsubjects/TestSubject.VALUE_ONE : I |__STACK: [I] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;] IRETURN |__STACK: [] - |__LOCAL: [Ljava/lang/Object;, Ljava/lang/Object;] Method assertEquals L0 DLOAD 1 |__STACK: [D, TOP] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] DLOAD 3 |__STACK: [D, TOP, D, TOP] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] INVOKESTATIC java/lang/Double.compare (DD)I |__STACK: [I] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] IFNE L1 |__STACK: [] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] L2 RETURN |__STACK: [] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] L1 FRAME SAME DLOAD 1 |__STACK: [D, TOP] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] DLOAD 3 |__STACK: [D, TOP, D, TOP] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] DSUB |__STACK: [D, TOP] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] INVOKESTATIC java/lang/Math.abs (D)D |__STACK: [D, TOP] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] DLOAD 5 |__STACK: [D, TOP, D, TOP] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] DCMPG |__STACK: [I] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] IFLE L3 |__STACK: [] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] L4 NEW java/lang/RuntimeException |__STACK: [Ljava/lang/RuntimeException;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] DUP |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] NEW java/lang/StringBuilder |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] DUP |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/StringBuilder;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] INVOKESPECIAL java/lang/StringBuilder. ()V |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] ALOAD 0 |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/String;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/String;)Ljava/lang/StringBuilder; |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] NEW java/lang/Double |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] DUP |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;, Ljava/lang/Double;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] DLOAD 1 |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;, Ljava/lang/Double;, D, TOP] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] INVOKESPECIAL java/lang/Double. (D)V |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder; |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] NEW java/lang/Double |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] DUP |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;, Ljava/lang/Double;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] DLOAD 3 |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;, Ljava/lang/Double;, D, TOP] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] INVOKESPECIAL java/lang/Double. (D)V |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;, Ljava/lang/Double;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] INVOKEVIRTUAL java/lang/StringBuilder.append (Ljava/lang/Object;)Ljava/lang/StringBuilder; |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/StringBuilder;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] INVOKEVIRTUAL java/lang/StringBuilder.toString ()Ljava/lang/String; |__STACK: [Ljava/lang/RuntimeException;, Ljava/lang/RuntimeException;, Ljava/lang/String;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] INVOKESPECIAL java/lang/RuntimeException. (Ljava/lang/String;)V |__STACK: [Ljava/lang/RuntimeException;] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] ATHROW |__STACK: [] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] L3 FRAME SAME RETURN |__STACK: [] - |__LOCAL: [Ljava/lang/String;, D, TOP, D, TOP, D, TOP] Method simpleTryWithResources L0 NEW testsubjects/TestSubject$SimpleResource |__STACK: [Ltestsubjects/TestSubject$SimpleResource;] - |__LOCAL: [] DUP |__STACK: [Ltestsubjects/TestSubject$SimpleResource;, Ltestsubjects/TestSubject$SimpleResource;] - |__LOCAL: [] INVOKESPECIAL testsubjects/TestSubject$SimpleResource. ()V |__STACK: [Ltestsubjects/TestSubject$SimpleResource;] - |__LOCAL: [] ASTORE 0 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;] ACONST_NULL |__STACK: [NULL] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;] ASTORE 1 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL] L1 ALOAD 0 |__STACK: [Ltestsubjects/TestSubject$SimpleResource;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL] ICONST_1 |__STACK: [Ltestsubjects/TestSubject$SimpleResource;, I] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL] INVOKEVIRTUAL testsubjects/TestSubject$SimpleResource.call (Z)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL] L2 ALOAD 0 |__STACK: [Ltestsubjects/TestSubject$SimpleResource;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL] IFNULL L3 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL] ALOAD 1 |__STACK: [NULL] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL] IFNULL L4 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL] L5 ALOAD 0 |__STACK: [Ltestsubjects/TestSubject$SimpleResource;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL] INVOKEVIRTUAL testsubjects/TestSubject$SimpleResource.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL] L6 GOTO L3 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, NULL] L7 FRAME FULL [testsubjects/TestSubject$SimpleResource java/lang/Throwable] [java/lang/Throwable] ASTORE 2 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 1 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 2 |__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] GOTO L3 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] L4 FRAME SAME ALOAD 0 |__STACK: [Ltestsubjects/TestSubject$SimpleResource;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;] INVOKEVIRTUAL testsubjects/TestSubject$SimpleResource.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;] GOTO L3 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;] L8 FRAME SAME1 java/lang/Throwable ASTORE 2 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 2 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ASTORE 1 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 2 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ATHROW |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] L9 FRAME SAME1 java/lang/Throwable ASTORE 3 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;] L10 ALOAD 0 |__STACK: [Ltestsubjects/TestSubject$SimpleResource;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;] IFNULL L11 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;] ALOAD 1 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;] IFNULL L12 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;] L13 ALOAD 0 |__STACK: [Ltestsubjects/TestSubject$SimpleResource;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;] INVOKEVIRTUAL testsubjects/TestSubject$SimpleResource.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;] L14 GOTO L11 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;] L15 FRAME FULL [testsubjects/TestSubject$SimpleResource java/lang/Throwable T java/lang/Throwable] [java/lang/Throwable] ASTORE 4 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 1 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 4 |__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] GOTO L11 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] L12 FRAME SAME ALOAD 0 |__STACK: [Ltestsubjects/TestSubject$SimpleResource;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;] INVOKEVIRTUAL testsubjects/TestSubject$SimpleResource.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;] L11 FRAME SAME ALOAD 3 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;] ATHROW |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject$SimpleResource;, Ljava/lang/Throwable;, TOP, Ljava/lang/Throwable;] L3 FRAME FULL [] [] RETURN |__STACK: [] - |__LOCAL: [] Method internalCompare L0 ALOAD 4 |__STACK: [Ljava/util/function/BinaryOperator;] - |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;] LLOAD 0 |__STACK: [Ljava/util/function/BinaryOperator;, J, TOP] - |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;] INVOKESTATIC java/lang/Long.valueOf (J)Ljava/lang/Long; |__STACK: [Ljava/util/function/BinaryOperator;, Ljava/lang/Long;] - |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;] LLOAD 2 |__STACK: [Ljava/util/function/BinaryOperator;, Ljava/lang/Long;, J, TOP] - |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;] INVOKESTATIC java/lang/Long.valueOf (J)Ljava/lang/Long; |__STACK: [Ljava/util/function/BinaryOperator;, Ljava/lang/Long;, Ljava/lang/Long;] - |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;] INVOKEINTERFACE java/util/function/BinaryOperator.apply (Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; |__STACK: [Ljava/lang/Object;] - |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;] CHECKCAST java/lang/Long |__STACK: [Ljava/lang/Long;] - |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;] INVOKEVIRTUAL java/lang/Long.longValue ()J |__STACK: [J, TOP] - |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;] LRETURN |__STACK: [] - |__LOCAL: [J, TOP, J, TOP, Ljava/util/function/BinaryOperator;] Method closeResourceArray L0 ALOAD 1 |__STACK: [[Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;] ASTORE 2 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;] ALOAD 2 |__STACK: [[Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;] ARRAYLENGTH |__STACK: [I] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;] ISTORE 3 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I] ICONST_0 |__STACK: [I] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I] ISTORE 4 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I] L1 FRAME APPEND [[Ljava/sql/Statement; I I] ILOAD 4 |__STACK: [I] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I] ILOAD 3 |__STACK: [I, I] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I] IF_ICMPGE L2 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I] ALOAD 2 |__STACK: [[Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I] ILOAD 4 |__STACK: [[Ljava/sql/Statement;, I] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I] AALOAD |__STACK: [Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I] ASTORE 5 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;] L3 ALOAD 0 |__STACK: [Ltestsubjects/TestSubject;] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;] ALOAD 5 |__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;] ACONST_NULL |__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;, NULL] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;] INVOKEVIRTUAL testsubjects/TestSubject.closeResource (Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;] L4 IINC 4 1 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;] GOTO L1 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;] L2 FRAME CHOP 3 RETURN |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [Ljava/sql/Statement;] Method closeResourceMultiArray L0 ALOAD 1 |__STACK: [[[Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;] ASTORE 2 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;] ALOAD 2 |__STACK: [[[Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;] ARRAYLENGTH |__STACK: [I] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;] ISTORE 3 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I] ICONST_0 |__STACK: [I] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I] ISTORE 4 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I] L1 FRAME APPEND [[[Ljava/sql/Statement; I I] ILOAD 4 |__STACK: [I] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I] ILOAD 3 |__STACK: [I, I] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I] IF_ICMPGE L2 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I] ALOAD 2 |__STACK: [[[Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I] ILOAD 4 |__STACK: [[[Ljava/sql/Statement;, I] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I] AALOAD |__STACK: [[Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I] ASTORE 5 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;] L3 ALOAD 5 |__STACK: [[Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;] ASTORE 6 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;] ALOAD 6 |__STACK: [[Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;] ARRAYLENGTH |__STACK: [I] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;] ISTORE 7 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I] ICONST_0 |__STACK: [I] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I] ISTORE 8 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I] L4 FRAME FULL [testsubjects/TestSubject [[Ljava/sql/Statement; [[Ljava/sql/Statement; I I [Ljava/sql/Statement; [Ljava/sql/Statement; I I] [] ILOAD 8 |__STACK: [I] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I] ILOAD 7 |__STACK: [I, I] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I] IF_ICMPGE L5 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I] ALOAD 6 |__STACK: [[Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I] ILOAD 8 |__STACK: [[Ljava/sql/Statement;, I] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I] AALOAD |__STACK: [Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I] ASTORE 9 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;] L6 ALOAD 0 |__STACK: [Ltestsubjects/TestSubject;] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;] ALOAD 9 |__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;] ACONST_NULL |__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;, NULL] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;] INVOKEVIRTUAL testsubjects/TestSubject.closeResource (Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;] L7 IINC 8 1 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;] GOTO L4 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I, [Ljava/sql/Statement;, [Ljava/sql/Statement;, I, I, Ljava/sql/Statement;] L5 FRAME FULL [testsubjects/TestSubject [[Ljava/sql/Statement; [[Ljava/sql/Statement; I I] [] IINC 4 1 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I] GOTO L1 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;, [[Ljava/sql/Statement;, I, I] L2 FRAME CHOP 3 RETURN |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, [[Ljava/sql/Statement;] Method closeResourceArrayList L0 ALOAD 1 |__STACK: [Ljava/util/List;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;] INVOKEINTERFACE java/util/List.iterator ()Ljava/util/Iterator; |__STACK: [Ljava/util/Iterator;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;] ASTORE 2 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;] L1 FRAME APPEND [java/util/Iterator] ALOAD 2 |__STACK: [Ljava/util/Iterator;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;] INVOKEINTERFACE java/util/Iterator.hasNext ()Z |__STACK: [I] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;] IFEQ L2 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;] ALOAD 2 |__STACK: [Ljava/util/Iterator;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;] INVOKEINTERFACE java/util/Iterator.next ()Ljava/lang/Object; |__STACK: [Ljava/lang/Object;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;] CHECKCAST java/sql/Statement |__STACK: [Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;] ASTORE 3 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;, Ljava/sql/Statement;] L3 ALOAD 0 |__STACK: [Ltestsubjects/TestSubject;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;, Ljava/sql/Statement;] ALOAD 3 |__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;, Ljava/sql/Statement;] ACONST_NULL |__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;, NULL] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;, Ljava/sql/Statement;] INVOKEVIRTUAL testsubjects/TestSubject.closeResource (Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;, Ljava/sql/Statement;] L4 GOTO L1 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;, Ljava/util/Iterator;, Ljava/sql/Statement;] L2 FRAME CHOP 1 RETURN |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/util/List;] Method closeSqlStmt L0 ACONST_NULL |__STACK: [NULL] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;] ASTORE 2 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, NULL] L1 ALOAD 1 |__STACK: [Ljava/sql/Connection;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, NULL] INVOKEINTERFACE java/sql/Connection.createStatement ()Ljava/sql/Statement; |__STACK: [Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, NULL] ASTORE 2 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;] L2 GOTO L3 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;] L4 FRAME FULL [testsubjects/TestSubject java/sql/Connection java/sql/Statement] [java/sql/SQLException] ASTORE 3 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;, Ljava/sql/SQLException;] L5 ALOAD 0 |__STACK: [Ltestsubjects/TestSubject;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;, Ljava/sql/SQLException;] ALOAD 2 |__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;, Ljava/sql/SQLException;] ALOAD 3 |__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;, Ljava/sql/SQLException;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;, Ljava/sql/SQLException;] INVOKEVIRTUAL testsubjects/TestSubject.closeResource (Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;, Ljava/sql/SQLException;] L3 FRAME SAME ALOAD 0 |__STACK: [Ltestsubjects/TestSubject;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;] ALOAD 2 |__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;] ACONST_NULL |__STACK: [Ltestsubjects/TestSubject;, Ljava/sql/Statement;, NULL] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;] INVOKEVIRTUAL testsubjects/TestSubject.closeResource (Ljava/lang/AutoCloseable;Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;] L6 RETURN |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/sql/Connection;, Ljava/sql/Statement;] Method closeResource L0 ALOAD 1 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] IFNONNULL L1 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L2 RETURN |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L1 FRAME SAME ALOAD 1 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L3 GOTO L4 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L5 FRAME SAME1 java/lang/Exception ASTORE 3 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;] L6 ALOAD 2 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;] IFNULL L7 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;] L8 ALOAD 2 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;] ALOAD 3 |__STACK: [Ljava/lang/Throwable;, Ljava/lang/Exception;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;] INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;] L7 FRAME APPEND [java/lang/Exception] ALOAD 3 |__STACK: [Ljava/lang/Exception;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;] ATHROW |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Exception;] L4 FRAME CHOP 1 RETURN |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] Method intAdd L0 ILOAD 0 |__STACK: [I] - |__LOCAL: [I, I] ISTORE 2 |__STACK: [] - |__LOCAL: [I, I, I] L1 IINC 2 1 |__STACK: [] - |__LOCAL: [I, I, I] L2 IINC 2 1 |__STACK: [] - |__LOCAL: [I, I, I] L3 ILOAD 2 |__STACK: [I] - |__LOCAL: [I, I, I] ILOAD 1 |__STACK: [I, I] - |__LOCAL: [I, I, I] IADD |__STACK: [I] - |__LOCAL: [I, I, I] ISTORE 2 |__STACK: [] - |__LOCAL: [I, I, I] L4 IINC 2 -1 |__STACK: [] - |__LOCAL: [I, I, I] L5 IINC 2 -1 |__STACK: [] - |__LOCAL: [I, I, I] L6 ILOAD 2 |__STACK: [I] - |__LOCAL: [I, I, I] ILOAD 1 |__STACK: [I, I] - |__LOCAL: [I, I, I] ISUB |__STACK: [I] - |__LOCAL: [I, I, I] ISTORE 2 |__STACK: [] - |__LOCAL: [I, I, I] L7 ILOAD 2 |__STACK: [I] - |__LOCAL: [I, I, I] ILOAD 1 |__STACK: [I, I] - |__LOCAL: [I, I, I] IMUL |__STACK: [I] - |__LOCAL: [I, I, I] ISTORE 2 |__STACK: [] - |__LOCAL: [I, I, I] L8 ILOAD 2 |__STACK: [I] - |__LOCAL: [I, I, I] ILOAD 1 |__STACK: [I, I] - |__LOCAL: [I, I, I] IDIV |__STACK: [I] - |__LOCAL: [I, I, I] ISTORE 2 |__STACK: [] - |__LOCAL: [I, I, I] L9 ILOAD 2 |__STACK: [I] - |__LOCAL: [I, I, I] ILOAD 1 |__STACK: [I, I] - |__LOCAL: [I, I, I] IREM |__STACK: [I] - |__LOCAL: [I, I, I] ISTORE 2 |__STACK: [] - |__LOCAL: [I, I, I] L10 ILOAD 2 |__STACK: [I] - |__LOCAL: [I, I, I] ICONST_2 |__STACK: [I, I] - |__LOCAL: [I, I, I] ISHL |__STACK: [I] - |__LOCAL: [I, I, I] ISTORE 2 |__STACK: [] - |__LOCAL: [I, I, I] L11 ILOAD 2 |__STACK: [I] - |__LOCAL: [I, I, I] ILOAD 1 |__STACK: [I, I] - |__LOCAL: [I, I, I] ISHR |__STACK: [I] - |__LOCAL: [I, I, I] ISTORE 2 |__STACK: [] - |__LOCAL: [I, I, I] L12 ILOAD 2 |__STACK: [I] - |__LOCAL: [I, I, I] ICONST_3 |__STACK: [I, I] - |__LOCAL: [I, I, I] IUSHR |__STACK: [I] - |__LOCAL: [I, I, I] ISTORE 2 |__STACK: [] - |__LOCAL: [I, I, I] L13 ILOAD 2 |__STACK: [I] - |__LOCAL: [I, I, I] I2L |__STACK: [J, TOP] - |__LOCAL: [I, I, I] LSTORE 3 |__STACK: [] - |__LOCAL: [I, I, I, J, TOP] L14 LLOAD 3 |__STACK: [J, TOP] - |__LOCAL: [I, I, I, J, TOP] ILOAD 1 |__STACK: [J, TOP, I] - |__LOCAL: [I, I, I, J, TOP] LSHL |__STACK: [J, TOP] - |__LOCAL: [I, I, I, J, TOP] LSTORE 3 |__STACK: [] - |__LOCAL: [I, I, I, J, TOP] L15 LLOAD 3 |__STACK: [J, TOP] - |__LOCAL: [I, I, I, J, TOP] L2I |__STACK: [I] - |__LOCAL: [I, I, I, J, TOP] IRETURN |__STACK: [] - |__LOCAL: [I, I, I, J, TOP] Method createNumberWithDiamond L0 ACONST_NULL |__STACK: [NULL] - |__LOCAL: [I] ASTORE 1 |__STACK: [] - |__LOCAL: [I, NULL] L1 ILOAD 0 |__STACK: [I] - |__LOCAL: [I, NULL] IFEQ L2 |__STACK: [] - |__LOCAL: [I, NULL] L3 NEW java/lang/Integer |__STACK: [Ljava/lang/Integer;] - |__LOCAL: [I, NULL] DUP |__STACK: [Ljava/lang/Integer;, Ljava/lang/Integer;] - |__LOCAL: [I, NULL] ICONST_1 |__STACK: [Ljava/lang/Integer;, Ljava/lang/Integer;, I] - |__LOCAL: [I, NULL] INVOKESPECIAL java/lang/Integer. (I)V |__STACK: [Ljava/lang/Integer;] - |__LOCAL: [I, NULL] ASTORE 1 |__STACK: [] - |__LOCAL: [I, Ljava/lang/Integer;] GOTO L4 |__STACK: [] - |__LOCAL: [I, Ljava/lang/Integer;] L2 FRAME APPEND [java/lang/Number] NEW java/lang/Double |__STACK: [Ljava/lang/Double;] - |__LOCAL: [I, Ljava/lang/Number;] DUP |__STACK: [Ljava/lang/Double;, Ljava/lang/Double;] - |__LOCAL: [I, Ljava/lang/Number;] DCONST_1 |__STACK: [Ljava/lang/Double;, Ljava/lang/Double;, D, TOP] - |__LOCAL: [I, Ljava/lang/Number;] INVOKESPECIAL java/lang/Double. (D)V |__STACK: [Ljava/lang/Double;] - |__LOCAL: [I, Ljava/lang/Number;] ASTORE 1 |__STACK: [] - |__LOCAL: [I, Ljava/lang/Double;] L4 FRAME SAME ALOAD 1 |__STACK: [Ljava/lang/Number;] - |__LOCAL: [I, Ljava/lang/Number;] ARETURN |__STACK: [] - |__LOCAL: [I, Ljava/lang/Number;] Method createMultiObjectArray L0 ICONST_0 |__STACK: [I] - |__LOCAL: [] ICONST_0 |__STACK: [I, I] - |__LOCAL: [] MULTIANEWARRAY [[Ljava/lang/Object; 2 |__STACK: [[[Ljava/lang/Object;] - |__LOCAL: [] ARETURN |__STACK: [] - |__LOCAL: [] Method createObjectArray L0 ICONST_0 |__STACK: [I] - |__LOCAL: [] ANEWARRAY java/lang/Object |__STACK: [[Ljava/lang/Object;] - |__LOCAL: [] ARETURN |__STACK: [] - |__LOCAL: [] Method createIntArray L0 ICONST_0 |__STACK: [I] - |__LOCAL: [] NEWARRAY T_INT |__STACK: [[I] - |__LOCAL: [] ARETURN |__STACK: [] - |__LOCAL: [] Method staticEmpty1 L0 RETURN |__STACK: [] - |__LOCAL: [] Method instanceEmpty1 L0 RETURN |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;] Method identity L0 ILOAD 0 |__STACK: [I] - |__LOCAL: [I] IRETURN |__STACK: [] - |__LOCAL: [I] Method identity2 L0 ILOAD 0 |__STACK: [I] - |__LOCAL: [I] ISTORE 1 |__STACK: [] - |__LOCAL: [I, I] L1 ILOAD 1 |__STACK: [I] - |__LOCAL: [I, I] IRETURN |__STACK: [] - |__LOCAL: [I, I] Method readFile L0 NEW java/io/BufferedReader |__STACK: [Ljava/io/BufferedReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;] DUP |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;] NEW java/io/FileReader |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;] DUP |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;] ALOAD 1 |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;, Ljava/io/File;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;] INVOKESPECIAL java/io/FileReader. (Ljava/io/File;)V |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;] INVOKESPECIAL java/io/BufferedReader. (Ljava/io/Reader;)V |__STACK: [Ljava/io/BufferedReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;] ASTORE 2 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;] ACONST_NULL |__STACK: [NULL] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;] ASTORE 3 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL] L1 NEW java/io/BufferedReader |__STACK: [Ljava/io/BufferedReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL] DUP |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL] NEW java/io/FileReader |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL] DUP |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL] ALOAD 1 |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;, Ljava/io/File;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL] INVOKESPECIAL java/io/FileReader. (Ljava/io/File;)V |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL] INVOKESPECIAL java/io/BufferedReader. (Ljava/io/Reader;)V |__STACK: [Ljava/io/BufferedReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL] ASTORE 4 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;] L2 ACONST_NULL |__STACK: [NULL] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;] ASTORE 5 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] L3 NEW java/io/BufferedReader |__STACK: [Ljava/io/BufferedReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] DUP |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] NEW java/io/FileReader |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] DUP |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] ALOAD 1 |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;, Ljava/io/File;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] INVOKESPECIAL java/io/FileReader. (Ljava/io/File;)V |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] INVOKESPECIAL java/io/BufferedReader. (Ljava/io/Reader;)V |__STACK: [Ljava/io/BufferedReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] ASTORE 6 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;] L4 ACONST_NULL |__STACK: [NULL] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;] ASTORE 7 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] L5 NEW java/io/BufferedReader |__STACK: [Ljava/io/BufferedReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] DUP |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] NEW java/io/FileReader |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] DUP |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] ALOAD 1 |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;, Ljava/io/FileReader;, Ljava/io/File;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] INVOKESPECIAL java/io/FileReader. (Ljava/io/File;)V |__STACK: [Ljava/io/BufferedReader;, Ljava/io/BufferedReader;, Ljava/io/FileReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] INVOKESPECIAL java/io/BufferedReader. (Ljava/io/Reader;)V |__STACK: [Ljava/io/BufferedReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] ASTORE 8 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;] L6 ACONST_NULL |__STACK: [NULL] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;] ASTORE 9 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] L7 ALOAD 8 |__STACK: [Ljava/io/BufferedReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] IFNULL L8 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] ALOAD 9 |__STACK: [NULL] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] IFNULL L9 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] L10 ALOAD 8 |__STACK: [Ljava/io/BufferedReader;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] L11 GOTO L8 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL, Ljava/io/BufferedReader;, NULL] L12 FRAME FULL [testsubjects/TestSubject java/io/File java/lang/AutoCloseable java/lang/Throwable java/lang/AutoCloseable java/lang/Throwable java/lang/AutoCloseable java/lang/Throwable java/lang/AutoCloseable java/lang/Throwable] [java/lang/Throwable] ASTORE 10 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 9 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 10 |__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] GOTO L8 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] L9 FRAME SAME ALOAD 8 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L8 FRAME CHOP 2 ALOAD 6 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] IFNULL L13 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] ALOAD 7 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] IFNULL L14 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L15 ALOAD 6 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L16 GOTO L13 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L17 FRAME SAME1 java/lang/Throwable ASTORE 8 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 7 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 8 |__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] GOTO L13 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] L14 FRAME SAME ALOAD 6 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] GOTO L13 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L18 FRAME SAME1 java/lang/Throwable ASTORE 8 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 8 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ASTORE 7 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 8 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ATHROW |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] L19 FRAME SAME1 java/lang/Throwable ASTORE 11 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;] L20 ALOAD 6 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;] IFNULL L21 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;] ALOAD 7 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;] IFNULL L22 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;] L23 ALOAD 6 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;] L24 GOTO L21 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;] L25 FRAME FULL [testsubjects/TestSubject java/io/File java/lang/AutoCloseable java/lang/Throwable java/lang/AutoCloseable java/lang/Throwable java/lang/AutoCloseable java/lang/Throwable T T T java/lang/Throwable] [java/lang/Throwable] ASTORE 12 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 7 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 12 |__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] GOTO L21 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] L22 FRAME SAME ALOAD 6 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;] L21 FRAME SAME ALOAD 11 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;] ATHROW |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, Ljava/lang/Throwable;] L13 FRAME FULL [testsubjects/TestSubject java/io/File java/lang/AutoCloseable java/lang/Throwable java/lang/AutoCloseable java/lang/Throwable] [] ALOAD 4 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] IFNULL L26 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] ALOAD 5 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] IFNULL L27 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L28 ALOAD 4 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L29 GOTO L26 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L30 FRAME SAME1 java/lang/Throwable ASTORE 6 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 5 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 6 |__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] GOTO L26 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] L27 FRAME SAME ALOAD 4 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] GOTO L26 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L31 FRAME SAME1 java/lang/Throwable ASTORE 6 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 6 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ASTORE 5 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 6 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ATHROW |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] L32 FRAME SAME1 java/lang/Throwable ASTORE 13 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] L33 ALOAD 4 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] IFNULL L34 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] ALOAD 5 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] IFNULL L35 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] L36 ALOAD 4 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] L37 GOTO L34 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] L38 FRAME FULL [testsubjects/TestSubject java/io/File java/lang/AutoCloseable java/lang/Throwable java/lang/AutoCloseable java/lang/Throwable T T T T T T T java/lang/Throwable] [java/lang/Throwable] ASTORE 14 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 5 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 14 |__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] GOTO L34 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] L35 FRAME SAME ALOAD 4 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] L34 FRAME SAME ALOAD 13 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] ATHROW |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] L26 FRAME FULL [testsubjects/TestSubject java/io/File java/lang/AutoCloseable java/lang/Throwable] [] ALOAD 2 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] IFNULL L39 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] ALOAD 3 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] IFNULL L40 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L41 ALOAD 2 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L42 GOTO L39 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L43 FRAME SAME1 java/lang/Throwable ASTORE 4 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 3 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 4 |__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] GOTO L39 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] L40 FRAME SAME ALOAD 2 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] GOTO L39 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;] L44 FRAME SAME1 java/lang/Throwable ASTORE 4 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 4 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ASTORE 3 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 4 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ATHROW |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, Ljava/lang/Throwable;] L45 FRAME SAME1 java/lang/Throwable ASTORE 15 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] L46 ALOAD 2 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] IFNULL L47 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] ALOAD 3 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] IFNULL L48 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] L49 ALOAD 2 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] L50 GOTO L47 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] L51 FRAME FULL [testsubjects/TestSubject java/io/File java/lang/AutoCloseable java/lang/Throwable T T T T T T T T T T T java/lang/Throwable] [java/lang/Throwable] ASTORE 16 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 3 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] ALOAD 16 |__STACK: [Ljava/lang/Throwable;, Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] INVOKEVIRTUAL java/lang/Throwable.addSuppressed (Ljava/lang/Throwable;)V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] GOTO L47 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;, Ljava/lang/Throwable;] L48 FRAME SAME ALOAD 2 |__STACK: [Ljava/lang/AutoCloseable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] INVOKEINTERFACE java/lang/AutoCloseable.close ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] L47 FRAME SAME ALOAD 15 |__STACK: [Ljava/lang/Throwable;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] ATHROW |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/lang/AutoCloseable;, Ljava/lang/Throwable;, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, TOP, Ljava/lang/Throwable;] L39 FRAME FULL [testsubjects/TestSubject java/io/File] [] GOTO L52 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;] L53 FRAME SAME1 java/io/IOException ASTORE 2 |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/IOException;] L54 ALOAD 2 |__STACK: [Ljava/io/IOException;] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/IOException;] INVOKEVIRTUAL java/io/IOException.printStackTrace ()V |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;, Ljava/io/IOException;] L52 FRAME SAME RETURN |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, Ljava/io/File;] -Method testWithDoubleTypes - L0 - DCONST_1 - |__STACK: [D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;] - DSTORE 1 - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP] - L1 - DCONST_1 - |__STACK: [D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP] - DSTORE 3 - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - L2 - FRAME APPEND [D D] - DLOAD 3 - |__STACK: [D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - LDC 22.0 - |__STACK: [D, TOP, D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - DCMPG - |__STACK: [I] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - IFGE L3 - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - L4 - GETSTATIC java/lang/System.out : Ljava/io/PrintStream; - |__STACK: [Ljava/io/PrintStream;] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - DLOAD 3 - |__STACK: [Ljava/io/PrintStream;, D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - INVOKEVIRTUAL java/io/PrintStream.println (D)V - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - L5 - DLOAD 1 - |__STACK: [D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - DLOAD 3 - |__STACK: [D, TOP, D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - DADD - |__STACK: [D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - DSTORE 1 - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - L6 - DLOAD 3 - |__STACK: [D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - DCONST_1 - |__STACK: [D, TOP, D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - DADD - |__STACK: [D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - DSTORE 3 - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - GOTO L2 - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP, D, TOP] - L3 - FRAME CHOP 1 - DLOAD 1 - |__STACK: [D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP] - DRETURN - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, D, TOP] -Method testWithFloatAndDoubleTypes - L0 - FCONST_1 - |__STACK: [F] - |__LOCAL: [Ltestsubjects/TestSubject;] - FSTORE 1 - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, F] - L1 - DCONST_1 - |__STACK: [D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, F] - DSTORE 2 - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - L2 - FRAME APPEND [F D] - DLOAD 2 - |__STACK: [D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - LDC 22.0 - |__STACK: [D, TOP, D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - DCMPG - |__STACK: [I] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - IFGE L3 - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - L4 - GETSTATIC java/lang/System.out : Ljava/io/PrintStream; - |__STACK: [Ljava/io/PrintStream;] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - DLOAD 2 - |__STACK: [Ljava/io/PrintStream;, D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - INVOKEVIRTUAL java/io/PrintStream.println (D)V - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - L5 - FLOAD 1 - |__STACK: [F] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - DLOAD 2 - |__STACK: [F, D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - D2F - |__STACK: [F, F] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - FADD - |__STACK: [F] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - FSTORE 1 - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - L6 - DLOAD 2 - |__STACK: [D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - DCONST_1 - |__STACK: [D, TOP, D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - DADD - |__STACK: [D, TOP] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - DSTORE 2 - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - GOTO L2 - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, F, D, TOP] - L3 - FRAME CHOP 1 - FLOAD 1 - |__STACK: [F] - |__LOCAL: [Ltestsubjects/TestSubject;, F] - FRETURN - |__STACK: [] - |__LOCAL: [Ltestsubjects/TestSubject;, F] Method L0 ICONST_1 |__STACK: [I] - |__LOCAL: [] PUTSTATIC testsubjects/TestSubject.VALUE_ONE : I |__STACK: [] - |__LOCAL: [] L1 ICONST_2 |__STACK: [I] - |__LOCAL: [] PUTSTATIC testsubjects/TestSubject.VALUE_TWO : I |__STACK: [] - |__LOCAL: [] RETURN - |__STACK: [] - |__LOCAL: [] \ No newline at end of file + |__STACK: [] \ No newline at end of file diff --git a/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.java b/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.java index 476da87..2573648 100644 --- a/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.java +++ b/test/java/com/google/devtools/build/android/desugar/BytecodeTypeInferenceTest.java @@ -13,11 +13,8 @@ // limitations under the License. package com.google.devtools.build.android.desugar; -import static com.google.common.truth.Truth.assertThat; - -import com.google.common.collect.ImmutableMap; import com.google.common.io.Files; -import com.google.devtools.build.android.desugar.BytecodeTypeInference.InferredType; +import com.google.common.truth.Truth; import java.io.IOException; import java.io.PrintWriter; import java.io.StringWriter; @@ -27,7 +24,6 @@ import java.nio.file.Paths; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; -import org.objectweb.asm.Label; /** Test for {@link BytecodeTypeInference} */ @RunWith(JUnit4.class) @@ -37,7 +33,7 @@ public class BytecodeTypeInferenceTest { private static final Path GOLDEN_PATH = Paths.get(System.getProperty("golden_file")); @Test - public void testTypeInference() throws IOException { + public void test() throws IOException { StringWriter stringWriter = new StringWriter(); try (PrintWriter printWriter = new PrintWriter(stringWriter)) { ByteCodeTypePrinter.printClassesWithTypes(JAR_PATH, printWriter); @@ -45,37 +41,6 @@ public class BytecodeTypeInferenceTest { } String inferenceResult = stringWriter.toString().trim(); String golden = Files.asCharSource(GOLDEN_PATH.toFile(), StandardCharsets.UTF_8).read().trim(); - assertThat(inferenceResult).isEqualTo(golden); - } - - @Test - public void testUninitializedInferType() { - Label label = new Label(); - InferredType type = InferredType.createUninitializedType(label); - assertThat(type.descriptor()).isEqualTo(InferredType.UNINITIALIZED_PREFIX); - assertThat(type.uninitializationLabel()).isEqualTo(label); - } - - @Test - public void testNonUninitializedInferType() { - ImmutableMap map = - ImmutableMap.builder() - .put("Z", InferredType.BOOLEAN) - .put("B", InferredType.BYTE) - .put("I", InferredType.INT) - .put("F", InferredType.FLOAT) - .put("D", InferredType.DOUBLE) - .put("J", InferredType.LONG) - .put("TOP", InferredType.TOP) - .put("NULL", InferredType.NULL) - .put("UNINITIALIZED_THIS", InferredType.UNINITIALIZED_THIS) - .build(); - map.forEach( - (descriptor, expected) -> { - InferredType type = InferredType.createNonUninitializedType(descriptor); - assertThat(type.uninitializationLabel()).isNull(); - assertThat(type.descriptor()).isEqualTo(descriptor); - assertThat(type).isSameAs(expected); - }); + Truth.assertThat(inferenceResult).isEqualTo(golden); } } diff --git a/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/test_subjects.jar b/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/test_subjects.jar index f1bb726..efa491b 100644 Binary files a/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/test_subjects.jar and b/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/test_subjects.jar differ diff --git a/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/testsubjects/TestSubject.java b/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/testsubjects/TestSubject.java index a07e73b..b5463a7 100644 --- a/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/testsubjects/TestSubject.java +++ b/test/java/com/google/devtools/build/android/desugar/classes_for_testing_type_inference/testsubjects/TestSubject.java @@ -193,22 +193,4 @@ public class TestSubject { e.printStackTrace(); } } - - public double testWithDoubleTypes() { - double result = 1; - for (double i = 1; i < 22; i = i + 1) { - System.out.println(i); - result += i; - } - return result; - } - - public float testWithFloatAndDoubleTypes() { - float result = 1; - for (double i = 1; i < 22; i = i + 1) { - System.out.println(i); - result += (float) i; - } - return result; - } } -- cgit v1.2.3