   @usableFromInline // c-abi
   internal var storage: UnsafeMutablePointer<Int>?
 
+  @usableFromInline // c-abi
+  internal var retainer = [CVarArg]()
+
   internal static var alignedStorageForEmptyVaLists: Double = 0
 }
 


  @inlinable // c-abi
  internal func append(_ arg: CVarArg) {
    var encoded = arg._cVarArgEncoding

#if arch(x86_64) || arch(arm64)

  /// Returns the required alignment in bytes of
  /// the value returned by `_cVarArgEncoding`.
  var _cVarArgAlignment: Int { get }
}

/// Some pointers require an alternate object to be retained.  The object
/// that is returned will be used with _cVarArgEncoding and held until
/// the closure is complete.  This is required since autoreleased storage
/// is available on all platforms.
public protocol _CVarArgObject: CVarArg {
  /// Returns the alternate object that should be encoded.
  var _cVarArgObject: CVarArg { get }
}

#if arch(x86_64)
