org_aspectj_ajde_core_tests_model_SavedModelConsistencyTest_java
org.aspectj.weaver.bcel.BcelClassWeaver
private void matchInvokeInstruction(LazyMethodGen mg, InstructionHandle ih, InvokeInstruction invoke, BcelShadow enclosingShadow, List<BcelShadow> shadowAccumulator) {
        String methodName = invoke.getName(this.cpg);
        if (methodName.startsWith("ajc$")) {
            Member jpSig = this.world.makeJoinPointSignatureForMethodInvocation(this.clazz, invoke);
            ResolvedMember declaredSig = jpSig.resolve(this.world);
            if (declaredSig == null) {
                return;
            }
            if (declaredSig.getKind() == Member.FIELD) {
                Shadow.Kind kind = jpSig.getReturnType().equals(UnresolvedType.VOID) ? Shadow.FieldSet : Shadow.FieldGet;
                if (this.canMatch(Shadow.FieldGet) || this.canMatch(Shadow.FieldSet)) {
                    this.match(BcelShadow.makeShadowForMethodCall(this.world, mg, ih, enclosingShadow, kind, declaredSig), shadowAccumulator);
                }
            } else if (!declaredSig.getName().startsWith("ajc$")) {
                if (this.canMatch(Shadow.MethodCall)) {
                    this.match(BcelShadow.makeShadowForMethodCall(this.world, mg, ih, enclosingShadow, Shadow.MethodCall, declaredSig), shadowAccumulator);
                }
            } else {
                AjAttribute.EffectiveSignatureAttribute effectiveSig = declaredSig.getEffectiveSignature();
                if (effectiveSig == null) {
                    return;
                }
                if (effectiveSig.isWeaveBody()) {
                    return;
                }
                ResolvedMember rm = effectiveSig.getEffectiveSignature();
                this.fixParameterNamesForResolvedMember(rm, declaredSig);
                this.fixAnnotationsForResolvedMember(rm, declaredSig);
                if (this.canMatch(effectiveSig.getShadowKind())) {
                    this.match(BcelShadow.makeShadowForMethodCall(this.world, mg, ih, enclosingShadow, effectiveSig.getShadowKind(), rm), shadowAccumulator);
                }
            }
        } else if (this.canMatch(Shadow.MethodCall)) {
            boolean proceed = true;
            if (this.world.isOverWeaving()) {
                String s = invoke.getClassName(mg.getConstantPool());
                if (s.length() > 4 && s.charAt(4) == 'a' && (s.equals("org.aspectj.runtime.internal.CFlowCounter") || s.equals("org.aspectj.runtime.internal.CFlowStack") || s.equals("org.aspectj.runtime.reflect.Factory"))) {
                    proceed = false;
                } else if (methodName.equals("aspectOf")) {
                    proceed = false;
                }
            }
            if (methodName.startsWith(SWITCH_TABLE_SYNTHETIC_METHOD_PREFIX)) {
                proceed = false;
            }
            if (proceed) {
                this.match(BcelShadow.makeMethodCall(this.world, mg, ih, enclosingShadow), shadowAccumulator);
            }
        }
    }
 -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.charAt(int): char -> java.lang.String.replace(char,char): java.lang.String -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.length(): int -> java.lang.String.endsWith(java.lang.String): boolean -> java.lang.String.charAt(int): char -> java.lang.String.contains(java.lang.CharSequence): boolean -> java.lang.String.replace(char,char): java.lang.String -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.contains(java.lang.CharSequence): boolean -> java.lang.String.charAt(int): char -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.indexOf(int): int -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.reflect.Modifier.isInterface(int): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Queue.add(java.lang.Object): boolean -> java.lang.ref.WeakReference.get(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.reflect.Modifier.isStatic(int): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.reflect.Modifier.isStatic(int): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.reflect.Modifier.isStatic(int): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.reflect.Modifier.isStatic(int): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.reflect.Modifier.isStatic(int): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.reflect.Modifier.isStatic(int): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.reflect.Modifier.isStatic(int): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.reflect.Modifier.isStatic(int): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.reflect.Modifier.isStatic(int): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.next(): java.lang.Object -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.reflect.Modifier.isStatic(int): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.charAt(int): char -> java.lang.String.substring(int): java.lang.String -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.charAt(int): char -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.startsWith(java.lang.String): boolean
 [CALL] [CALL] [EXIT] -> java.lang.String.startsWith(java.lang.String): boolean [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] -> java.lang.String.charAt(int): char -> java.lang.String.replace(char,char): java.lang.String [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] -> java.lang.String.startsWith(java.lang.String): boolean [CALL] [CALL] [CALL] -> java.lang.String.length(): int -> java.lang.String.endsWith(java.lang.String): boolean -> java.lang.String.charAt(int): char -> java.lang.String.contains(java.lang.CharSequence): boolean -> java.lang.String.replace(char,char): java.lang.String -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(char): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [EXIT] [CALL] -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.contains(java.lang.CharSequence): boolean -> java.lang.String.charAt(int): char [CALL] -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.lang.String.indexOf(int): int [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] -> java.lang.reflect.Modifier.isInterface(int): boolean [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] [CALL] [CALL] -> java.util.Queue.add(java.lang.Object): boolean [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.ref.WeakReference.get(): java.lang.Object [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [CALL] [EXIT] [EXIT] -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [EXIT] [EXIT] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.reflect.Modifier.isStatic(int): boolean [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [EXIT] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.reflect.Modifier.isStatic(int): boolean -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [EXIT] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.reflect.Modifier.isStatic(int): boolean [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [EXIT] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.reflect.Modifier.isStatic(int): boolean [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [EXIT] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.reflect.Modifier.isStatic(int): boolean [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [EXIT] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.reflect.Modifier.isStatic(int): boolean [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [EXIT] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.reflect.Modifier.isStatic(int): boolean [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [EXIT] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.reflect.Modifier.isStatic(int): boolean [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [EXIT] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.reflect.Modifier.isStatic(int): boolean [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] [EXIT] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.next(): java.lang.Object [CALL] -> java.util.Iterator.hasNext(): boolean [CALL] [EXIT] -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.reflect.Modifier.isStatic(int): boolean [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [EXIT] [CALL] [CALL] -> java.lang.String.charAt(int): char -> java.lang.String.substring(int): java.lang.String [CALL] -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.charAt(int): char [EXIT] [EXIT] [CALL] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [CALL] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder [CALL] [EXIT] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.String.startsWith(java.lang.String): boolean [CALL] [EXIT] [EXIT]