 ///      }
 ///
 @_fixed_layout
-public struct ManagedBufferPointer<Header, Element> : Equatable {
+public struct ManagedBufferPointer<Header, Element> {
+
+  @usableFromInline
+  internal var _nativeBuffer: Builtin.NativeObject
 
   /// Create with new storage containing an initial `Header` and space
   /// for at least `minimumCapacity` `element`s.

  /// An **unmanaged** pointer to the storage for `Element`s.  Not
  /// safe to use without _fixLifetime calls to guarantee it doesn't
  /// dangle.
  @inlinable // FIXME(sil-serialize-all)
  internal var _elementPointer: UnsafeMutablePointer<Element> {
    _onFastPath()
    return (_address + ManagedBufferPointer._elementOffset).assumingMemoryBound(

  }

  /// Offset from the allocated storage for `self` to the `Element` storage
  @inlinable
  internal static var _elementOffset: Int {
    _onFastPath()
    return _roundUp(
      _headerOffset + MemoryLayout<Header>.size,
      toAlignment: MemoryLayout<Element>.alignment)
  }
}

extension ManagedBufferPointer: Equatable {
  @inlinable
  public static func == (
    lhs: ManagedBufferPointer,
    rhs: ManagedBufferPointer
  ) -> Bool {
    return lhs._address == rhs._address
  }
}

// FIXME: when our calling convention changes to pass self at +0,
