       self = _ContiguousArrayBuffer<T>()
     }
     else {
-      _base = _HeapBuffer(
-        _ContiguousArrayStorage<T>.self,
-        _ArrayBody(),
-        realMinimumCapacity)
-
+      __bufferPointer = ManagedBufferPointer(
+        bufferClass: _ContiguousArrayStorage<T>.self,
+        minimumCapacity: realMinimumCapacity
+      ) {_,_ in _ArrayBody() }
+      
       let verbatim = _isBridgedVerbatimToObjectiveC(T.self)
       
-      _base.value = _ArrayBody(
+      __bufferPointer.value = _ArrayBody(
         count: count, capacity: _base._capacity(),
         elementTypeIsBridgedVerbatim: verbatim)
     }
   }
 
   init(_ storage: _ContiguousArrayStorageBase?) {
-    _base = unsafeBitCast(storage, _HeapBuffer<_ArrayBody, T>.self)
+    __bufferPointer = ManagedBufferPointer(
+      unsafeBufferObject: storage ?? _emptyArrayStorage)
   }
 
   public var hasStorage: Bool {

  }

  typealias _Base = _HeapBuffer<_ArrayBody, T>
  var _base: _Base
}

/// Append the elements of rhs to lhs

  /// may need to be considered, such as whether the buffer could be
  /// some immutable Cocoa container.
  public mutating func isUniquelyReferenced() -> Bool {
    return __bufferPointer.holdsUniqueReference()
  }

  /// Returns true iff this buffer is mutable. NOTE: a true result
