 /// `withVaList` as intended.
 @warn_unused_result
 public func getVaList(args: [CVarArg]) -> CVaListPointer {
-  let builder = VaListBuilder()
+  let builder = _VaListBuilder()
   for a in args {
     builder.append(a)
   }


/// An object that can manage the lifetime of storage backing a
/// `CVaListPointer`.
final public class VaListBuilder {

  func append(arg: CVarArg) {
    // Write alignment padding if necessary.

/// Invoke `f` with a C `va_list` argument derived from `args`.
public func withVaList<R>(args: [CVarArg],
  @noescape _ f: CVaListPointer -> R) -> R {
  let builder = _VaListBuilder()
  for a in args {
    builder.append(a)
  }
  return _withVaList(builder, f)
}

/// Invoke `f` with a C `va_list` argument derived from `builder`.
internal func _withVaList<R>(
  builder: _VaListBuilder,
  @noescape _ f: CVaListPointer -> R
) -> R {
  let result = f(builder.va_list())
  _fixLifetime(builder)
  return result
