widenClasspath

internal fun widenClasspath(entries: List<CpEntry>, pinned: LanguageVersion?): List<File>

Widen compile classpath: every .class needing an access flag change goes into a STORED (uncompressed) shard — one per user-installed jar, one for everything else — and the shards are prepended in classpath order, so the compiler finds widened versions first and untouched classes fall through to the original jars. Names are deduplicated within a shard, never across them: shards win in classpath order, exactly as the jars behind them do.

This opens JVM private/protected only. Kotlin internal needs friend module data instead, which PlainEngine builds over the whole classpath.