in src/main/kotlin/com/github/mkartashev/hserr/miner/HsErrLog.kt [19:42]
fun <T: Artifact> getArtifact(cls: KClass<T>): T? {
var result: Artifact? = null
if (!artifactByClass.containsKey(cls)) {
// NB: can't use "computeIfAbsent()" because "extract()" may modify
// the underlying map
val extractor = ArtifactExtractorRegistry.get(cls)
try {
result = extractor.extract(this)
} catch (e: ArtifactExtractionException) {
if (enableDebug) {
println(e.message)
}
} catch (e: Exception) {
if (!catchAll) throw e
else println(e.message)
} finally {
artifactByClass[cls] = result
}
} else {
result = artifactByClass[cls]
}
return cls.safeCast(result)
}