diff --git a/dexlib/src/main/java/org/jf/dexlib/Code/Analysis/SyntheticAccessorResolver.java b/dexlib/src/main/java/org/jf/dexlib/Code/Analysis/SyntheticAccessorResolver.java index 3494b070..09ac7968 100644 --- a/dexlib/src/main/java/org/jf/dexlib/Code/Analysis/SyntheticAccessorResolver.java +++ b/dexlib/src/main/java/org/jf/dexlib/Code/Analysis/SyntheticAccessorResolver.java @@ -90,7 +90,11 @@ public class SyntheticAccessorResolver { return null; } InstructionWithReference instruction = (InstructionWithReference)instructions[0]; - MethodIdItem referencedMethodIdItem = (MethodIdItem)instruction.getReferencedItem(); + Item referencedItem = instruction.getReferencedItem(); + if (!(referencedItem instanceof MethodIdItem)) { + return null; + } + MethodIdItem referencedMethodIdItem = (MethodIdItem)referencedItem; accessedMember = new AccessedMember(METHOD, referencedMethodIdItem); resolvedAccessors.put(methodIdItem, accessedMember); @@ -102,7 +106,11 @@ public class SyntheticAccessorResolver { return null; } Instruction22c instruction = (Instruction22c)instructions[0]; - FieldIdItem referencedFieldIdItem = (FieldIdItem)instruction.getReferencedItem(); + Item referencedItem = instruction.getReferencedItem(); + if (!(referencedItem instanceof FieldIdItem)) { + return null; + } + FieldIdItem referencedFieldIdItem = (FieldIdItem)referencedItem; if (instruction.opcode.setsRegister() || instruction.opcode.setsWideRegister()) { accessedMember = new AccessedMember(GETTER, referencedFieldIdItem);