}
// walk the binding keys
this.requestedKeys = new HashtableOfObject();
for (int i = 0; i < keyLength; i++) {
BindingKeyResolver resolver = new BindingKeyResolver(bindingKeys[i], this, this.lookupEnvironment);
resolver.parse(true/*pause after fully qualified name*/);
// If it doesn't have a type name, then it is either an array type, package or base type, which will definitely not have a compilation unit.
// Skipping it will speed up performance because the call will open jars. (theodora)
CompilationUnitDeclaration parsedUnit = resolver.hasTypeName() ? resolver.getCompilationUnitDeclaration() : null;
if (parsedUnit != null) {
char[] fileName = parsedUnit.compilationResult.getFileName();
Object existing = this.requestedKeys.get(fileName);
if (existing == null)
this.requestedKeys.put(fileName, resolver);
else if (existing instanceof ArrayList)
((ArrayList) existing).add(resolver);
else {
ArrayList list = new ArrayList();
list.add(existing);
list.add(resolver);
this.requestedKeys.put(fileName, list);
}
} else {
char[] key = resolver.hasTypeName()
? resolver.getKey().toCharArray() // binary binding
: CharOperation.concatWith(resolver.compoundName(), '.'); // package binding or base type binding
this.requestedKeys.put(key, resolver);
}
worked(1);
}