fun <DI : DriverDSLExposedInterface, D : DriverDSLInternalInterface, A> genericDriver(driverDsl: D, coerce: (D) -> DI, dsl: DI.() -> A): AThis is a helper method to allow extending of the DSL, along the lines of interface SomeOtherExposedDSLInterface : DriverDSLExposedInterface interface SomeOtherInternalDSLInterface : DriverDSLInternalInterface, SomeOtherExposedDSLInterface class SomeOtherDSL(val driverDSL : DriverDSL) : DriverDSLInternalInterface by driverDSL, SomeOtherInternalDSLInterface
coerce - We need this explicit coercion witness because we cant put an extra DI : D bound in a where clause.