reconstruct

open override val reconstruct: (Tuple3<BackingField>) -> ActualWrapper

Function reference to the constructor of the value class.

You need to override this in the value class itself, so that its parent interfaces know how to create an instance of the child type.

@JvmInline
value class Bananas(override val value: Double) : Boxed<Bananas, Double> {
// Value classes can't have other backing fields, so accessor syntax is used.
override val reconstruct: (Double) -> Bananas get() = ::ValueClass
}