org_aspectj_ajde_core_tests_ShowWeaveMessagesTest_java
org.aspectj.weaver.bcel.Utility
public static List<AjAttribute> readAjAttributes(String classname, Attribute[] as, ISourceContext context, World w, AjAttribute.WeaverVersionInfo version, ConstantPoolReader dataDecompressor) {
        Attribute a;
        int i;
        ArrayList<AjAttribute> attributes = new ArrayList<AjAttribute>();
        ArrayList<Unknown> forSecondPass = new ArrayList<Unknown>();
        for (i = as.length - 1; i >= 0; --i) {
            Unknown u;
            String name;
            a = as[i];
            if (!(a instanceof Unknown) || (name = (u = (Unknown)a).getName()).charAt(0) != PACKAGE_INITIAL_CHAR || !name.startsWith("org.aspectj.weaver")) continue;
            if (name.endsWith("org.aspectj.weaver.WeaverVersion") && (version = (AjAttribute.WeaverVersionInfo)AjAttribute.read(version, name, u.getBytes(), context, w, dataDecompressor)).getMajorVersion() > AjAttribute.WeaverVersionInfo.getCurrentWeaverMajorVersion()) {
                throw new BCException("Unable to continue, this version of AspectJ supports classes built with weaver version " + AjAttribute.WeaverVersionInfo.toCurrentVersionString() + " but the class " + classname + " is version " + version.toString() + ".  Please update your AspectJ.");
            }
            forSecondPass.add(u);
        }
        for (i = forSecondPass.size() - 1; i >= 0; --i) {
            a = (Unknown)forSecondPass.get(i);
            String name = ((Unknown)a).getName();
            AjAttribute attr = AjAttribute.read(version, name, ((Unknown)a).getBytes(), context, w, dataDecompressor);
            if (attr == null) continue;
            attributes.add(attr);
        }
        return attributes;
    }
 -> java.lang.String.charAt(int): char -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.endsWith(java.lang.String): boolean -> java.util.List.add(java.lang.Object): boolean -> java.lang.String.charAt(int): char -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.endsWith(java.lang.String): boolean -> 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.equals(java.lang.Object): boolean -> java.io.DataInputStream.readByte(): byte -> java.io.DataInputStream.readUTF(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> 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.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.io.DataInputStream.readShort(): short -> java.lang.String.charAt(int): char -> java.lang.String.length(): int -> java.io.DataInputStream.readByte(): byte -> java.util.List.add(java.lang.Object): boolean -> 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.util.List.add(java.lang.Object): boolean
 [CALL] [CALL] [EXIT] -> java.lang.String.charAt(int): char -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.endsWith(java.lang.String): boolean -> java.util.List.add(java.lang.Object): boolean [CALL] [EXIT] -> java.lang.String.charAt(int): char -> java.lang.String.startsWith(java.lang.String): boolean -> java.lang.String.endsWith(java.lang.String): boolean -> java.util.List.add(java.lang.Object): boolean -> java.util.List.size(): int -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] -> 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.equals(java.lang.Object): boolean [CALL] [CALL] [CALL] -> java.io.DataInputStream.readByte(): byte [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] -> java.io.DataInputStream.readUTF(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean [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] -> 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] [EXIT] [EXIT] [CALL] -> java.io.DataInputStream.readShort(): short [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] -> java.lang.String.charAt(int): char -> java.lang.String.length(): int [EXIT] [EXIT] [CALL] -> java.io.DataInputStream.readByte(): byte [EXIT] [CALL] [EXIT] [EXIT] [EXIT] -> java.util.List.add(java.lang.Object): boolean -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.String.equals(java.lang.Object): boolean [CALL] [CALL] [EXIT] [EXIT] [EXIT] -> java.util.List.add(java.lang.Object): boolean [EXIT]