inline fun creator(crossinline create: (Parcel) -> T) = object : Creator { override fun createFromParcel(source: Parcel) = create(source) override fun newArray(size: Int) = arrayOfNulls(size) } class Foo : Parcelable { constructor(parcel: Parcel) { ... } @JvmField val CREATOR = creator(::Foo) }