org_aspectj_ajde_core_tests_InpathTest_java
org.aspectj.weaver.model.AsmRelationshipProvider
public static void addAdvisedRelationship(AsmManager model, Shadow matchedShadow, ShadowMunger munger) {
        if (model == null) {
            return;
        }
        if (munger instanceof Advice) {
            Advice advice = (Advice)munger;
            if (advice.getKind().isPerEntry() || advice.getKind().isCflow()) {
                return;
            }
            if (World.createInjarHierarchy) {
                AsmRelationshipProvider.createHierarchyForBinaryAspect(model, advice);
            }
            IRelationshipMap mapper = model.getRelationshipMap();
            IProgramElement targetNode = AsmRelationshipProvider.getNode(model, matchedShadow);
            if (targetNode == null) {
                return;
            }
            boolean runtimeTest = advice.hasDynamicTests();
            IProgramElement.ExtraInformation extra = new IProgramElement.ExtraInformation();
            String adviceHandle = AsmRelationshipProvider.getHandle(model, advice);
            if (adviceHandle == null) {
                return;
            }
            extra.setExtraAdviceInformation(advice.getKind().getName());
            IProgramElement adviceElement = model.getHierarchy().findElementForHandle(adviceHandle);
            if (adviceElement != null) {
                adviceElement.setExtraInfo(extra);
            }
            String targetHandle = targetNode.getHandleIdentifier();
            if (advice.getKind().equals(AdviceKind.Softener)) {
                IRelationship back;
                IRelationship foreward = mapper.get(adviceHandle, IRelationship.Kind.DECLARE_SOFT, SOFTENS, runtimeTest, true);
                if (foreward != null) {
                    foreward.addTarget(targetHandle);
                }
                if ((back = mapper.get(targetHandle, IRelationship.Kind.DECLARE, SOFTENED_BY, runtimeTest, true)) != null) {
                    back.addTarget(adviceHandle);
                }
            } else {
                IRelationship back;
                IRelationship foreward = mapper.get(adviceHandle, IRelationship.Kind.ADVICE, ADVISES, runtimeTest, true);
                if (foreward != null) {
                    foreward.addTarget(targetHandle);
                }
                if ((back = mapper.get(targetHandle, IRelationship.Kind.ADVICE, ADVISED_BY, runtimeTest, true)) != null) {
                    back.addTarget(adviceHandle);
                }
            }
            if (adviceElement.getSourceLocation() != null) {
                model.addAspectInEffectThisBuild(adviceElement.getSourceLocation().getSourceFile());
            }
        }
    }
 -> 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.size(): int -> java.util.List.get(int): java.lang.Object -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object -> java.lang.String.equals(java.lang.Object): boolean -> java.util.Iterator.hasNext(): boolean -> java.util.List.isEmpty(): boolean -> java.util.Collections.emptyList(): java.util.List -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean
 [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] -> 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 [CALL] [CALL] [EXIT] -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean -> java.util.Iterator.next(): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean [CALL] [EXIT] -> java.util.Iterator.hasNext(): boolean -> java.util.List.isEmpty(): boolean -> java.util.Collections.emptyList(): java.util.List [EXIT] -> java.util.List.iterator(): java.util.Iterator -> java.util.Iterator.hasNext(): boolean [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT]