... Heap drawable: func draw(drawable: Drawable) { drawable.draw() } let value: Drawable = Line() draw(local: value) // Generates func draw(value: ECTDrawable) { var drawable: ECTDrawable = ECTDrawable() let vwt = value.vwt let pwt = value.pwt drawable.vwt = value.vwt drawable.pwt = value.pwt vwt.allocateBuffAndCopyValue(&drawable, value) pwt.draw(vwt.projectBuffer(&drawable) }