Thanks Tom. You're comment about the framework header was enough for me to explore and work out how to do that.
On iOS, before looking at Kotlin, I had Java/J2ObjC and Swift. Using embedding to allow the Java to call Swift, and using the bridging header to allow swift to call Java. Java Interface definitions, converted using J2Objc, are used to pass some data around
Now, I've added Kotlin, with the intention of moving gradually from J2ObjC to Kotlin. The compile sequence is Kotlin; J2ObjC; Swift.
Using the framework header as you suggest, I can now call from Java/J2ObjC to Kotlin using ObjC embedding. My intention is to use manual dependency injection to allow Kotlin to call Java (and Swift).
However, there's a problem. The interfaces/protocols would need to be defined in Kotlin, as it's compiled first. However the protocols are then not available to the Java, so it won't compile (they're in the .h file, which I understand Java can't import). So this might be a blocker.
If you have any suggestions regarding this then they'd be welcome.