in code/codegen/src/main/kotlin/com/android/gradle/replicator/codegen/ImportClassPicker.kt [59:90]
open fun pickClass(random: Random): ClassModel<*>? {
if (emptyPicker.get() || modules.isEmpty()) return null
var moduleIndex = random.nextInt(modules.size)
val startModuleIndex = moduleIndex
var selectedModule = modules[moduleIndex]
var classIndex = random.nextInt(selectedModule.classes.size)
var startClassIndexInModule = classIndex
var className = selectedModule.classes[classIndex]
var loadedClass= loadClass(className)
var classModel = if (loadedClass != null) {
if (verifyClasses) isClassEligible(loadedClass) else loadModel(loadedClass)
} else null
while (classModel == null) {
classIndex = (classIndex + 1) % selectedModule.classes.size
if (classIndex == startClassIndexInModule) {
moduleIndex = (moduleIndex + 1) % modules.size
if (moduleIndex == startModuleIndex) {
emptyPicker.set(true)
return null
}
selectedModule = modules[moduleIndex]
classIndex = random.nextInt(selectedModule.classes.size)
startClassIndexInModule = classIndex
}
className = selectedModule.classes[classIndex]
loadedClass= loadClass(className)
if (loadedClass != null) {
classModel = isClassEligible(loadedClass)
}
}
return classModel
}