org_aspectj_ajde_core_tests_ResourceCopyTest_java
org.aspectj.org.eclipse.jdt.internal.compiler.batch.FileSystem
@Override
    public char[][] getModulesDeclaringPackage(char[][] packageName, char[] moduleName) {
        String qualifiedPackageName = new String(CharOperation.concatWith(packageName, '/'));
        String moduleNameString = String.valueOf(moduleName);
        IModuleAwareNameEnvironment.LookupStrategy strategy = IModuleAwareNameEnvironment.LookupStrategy.get(moduleName);
        if (strategy == IModuleAwareNameEnvironment.LookupStrategy.Named) {
            Classpath classpath;
            if (this.moduleLocations != null && (classpath = this.moduleLocations.get(moduleNameString)) != null && classpath.isPackage(qualifiedPackageName, moduleNameString)) {
                return new char[][]{moduleName};
            }
            return null;
        }
        char[][] allNames = null;
        boolean hasUnobserable = false;
        Classpath[] classpathArray = this.classpaths;
        int n = this.classpaths.length;
        int n2 = 0;
        while (n2 < n) {
            Classpath cp = classpathArray[n2];
            if (strategy.matches(cp, Classpath::hasModule)) {
                if (strategy == IModuleAwareNameEnvironment.LookupStrategy.Unnamed) {
                    if (cp.isPackage(qualifiedPackageName, moduleNameString)) {
                        return new char[][]{ModuleBinding.UNNAMED};
                    }
                } else {
                    char[][] declaringModules = cp.getModulesDeclaringPackage(qualifiedPackageName, null);
                    if (declaringModules != null) {
                        if (cp instanceof ClasspathJrt && this.hasLimitModules) {
                            hasUnobserable |= (declaringModules = this.filterModules(declaringModules)) == null;
                        }
                        allNames = allNames == null ? declaringModules : CharOperation.arrayConcat(allNames, declaringModules);
                    }
                }
            }
            ++n2;
        }
        if (allNames == null && hasUnobserable) {
            return new char[][]{ModuleBinding.UNOBSERVABLE};
        }
        return allNames;
    }
 -> java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int): void -> java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int): void -> java.lang.String.valueOf(char[]): java.lang.String -> java.util.Set.add(java.lang.Object): boolean -> java.util.zip.ZipFile.entries(): java.util.Enumeration -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Enumeration.nextElement(): java.lang.Object -> java.util.zip.ZipEntry.getName(): java.lang.String -> java.lang.String.lastIndexOf(int): int -> java.lang.String.substring(int,int): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.util.Set.add(java.lang.Object): boolean -> java.lang.String.lastIndexOf(int): int -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Enumeration.nextElement(): java.lang.Object -> java.util.zip.ZipEntry.getName(): java.lang.String -> java.lang.String.lastIndexOf(int): int -> java.lang.String.substring(int,int): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Enumeration.nextElement(): java.lang.Object -> java.util.zip.ZipEntry.getName(): java.lang.String -> java.lang.String.lastIndexOf(int): int -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Enumeration.nextElement(): java.lang.Object -> java.util.zip.ZipEntry.getName(): java.lang.String -> java.lang.String.lastIndexOf(int): int -> java.lang.String.substring(int,int): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Enumeration.nextElement(): java.lang.Object -> java.util.zip.ZipEntry.getName(): java.lang.String -> java.lang.String.lastIndexOf(int): int -> java.lang.String.substring(int,int): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.util.Set.add(java.lang.Object): boolean -> java.lang.String.lastIndexOf(int): int -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Enumeration.nextElement(): java.lang.Object -> java.util.zip.ZipEntry.getName(): java.lang.String -> java.lang.String.lastIndexOf(int): int -> java.lang.String.substring(int,int): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Enumeration.nextElement(): java.lang.Object -> java.util.zip.ZipEntry.getName(): java.lang.String -> java.lang.String.lastIndexOf(int): int -> java.lang.String.substring(int,int): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Set.contains(java.lang.Object): boolean -> java.util.Hashtable.get(java.lang.Object): java.lang.Object -> java.lang.String.valueOf(java.lang.Object): java.lang.String -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.io.File.isDirectory(): boolean -> java.util.Hashtable.put(java.lang.Object,java.lang.Object): java.lang.Object -> java.io.File.toString(): java.lang.String -> java.util.Map.computeIfAbsent(java.lang.Object,java.util.function.Function): java.lang.Object -> java.util.Optional.orElse(java.lang.Object): java.lang.Object -> java.lang.String.replace(char,char): java.lang.String -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.util.Hashtable.get(java.lang.Object): java.lang.Object -> java.lang.String.valueOf(java.lang.Object): java.lang.String -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.io.File.isDirectory(): boolean -> java.util.Hashtable.put(java.lang.Object,java.lang.Object): java.lang.Object
 [CALL] [CALL] -> java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int): void -> java.lang.System.arraycopy(java.lang.Object,int,java.lang.Object,int,int): void [EXIT] -> java.lang.String.valueOf(char[]): java.lang.String [CALL] [CALL] [EXIT] -> java.util.Set.add(java.lang.Object): boolean -> java.util.zip.ZipFile.entries(): java.util.Enumeration -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Enumeration.nextElement(): java.lang.Object -> java.util.zip.ZipEntry.getName(): java.lang.String [CALL] -> java.lang.String.lastIndexOf(int): int -> java.lang.String.substring(int,int): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.util.Set.add(java.lang.Object): boolean -> java.lang.String.lastIndexOf(int): int [EXIT] -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Enumeration.nextElement(): java.lang.Object -> java.util.zip.ZipEntry.getName(): java.lang.String [CALL] -> java.lang.String.lastIndexOf(int): int -> java.lang.String.substring(int,int): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean [EXIT] -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Enumeration.nextElement(): java.lang.Object -> java.util.zip.ZipEntry.getName(): java.lang.String [CALL] -> java.lang.String.lastIndexOf(int): int [EXIT] -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Enumeration.nextElement(): java.lang.Object -> java.util.zip.ZipEntry.getName(): java.lang.String [CALL] -> java.lang.String.lastIndexOf(int): int -> java.lang.String.substring(int,int): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean [EXIT] -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Enumeration.nextElement(): java.lang.Object -> java.util.zip.ZipEntry.getName(): java.lang.String [CALL] -> java.lang.String.lastIndexOf(int): int -> java.lang.String.substring(int,int): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean -> java.util.Set.add(java.lang.Object): boolean -> java.lang.String.lastIndexOf(int): int [EXIT] -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Enumeration.nextElement(): java.lang.Object -> java.util.zip.ZipEntry.getName(): java.lang.String [CALL] -> java.lang.String.lastIndexOf(int): int -> java.lang.String.substring(int,int): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean [EXIT] -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Enumeration.nextElement(): java.lang.Object -> java.util.zip.ZipEntry.getName(): java.lang.String [CALL] -> java.lang.String.lastIndexOf(int): int -> java.lang.String.substring(int,int): java.lang.String -> java.util.Set.contains(java.lang.Object): boolean [EXIT] -> java.util.Enumeration.hasMoreElements(): boolean -> java.util.Set.contains(java.lang.Object): boolean [CALL] [EXIT] [EXIT] [CALL] [CALL] -> java.util.Hashtable.get(java.lang.Object): java.lang.Object -> java.lang.String.valueOf(java.lang.Object): java.lang.String -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.io.File.isDirectory(): boolean -> java.util.Hashtable.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] -> java.io.File.toString(): java.lang.String -> java.util.Map.computeIfAbsent(java.lang.Object,java.util.function.Function): java.lang.Object -> java.util.Optional.orElse(java.lang.Object): java.lang.Object [EXIT] [EXIT] [CALL] -> java.lang.String.replace(char,char): java.lang.String -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] -> java.util.Hashtable.get(java.lang.Object): java.lang.Object -> java.lang.String.valueOf(java.lang.Object): java.lang.String -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.io.File.isDirectory(): boolean -> java.util.Hashtable.put(java.lang.Object,java.lang.Object): java.lang.Object [EXIT] [CALL] [EXIT] [EXIT] [EXIT]