 
   /// An object that keeps the elements stored in this buffer alive.
   public var owner: AnyObject
-  public let subscriptBaseAddress: UnsafeMutablePointer<T>
-
-  public var firstElementAddress: UnsafeMutablePointer<T> {
+  public let subscriptBaseAddress: UnsafeMutablePointer<Element>
+
+  public var firstElementAddress: UnsafeMutablePointer<Element> {
     return subscriptBaseAddress + startIndex
   }
 

  }

  public init() {
    let empty = _ContiguousArrayBuffer<T>()
    self.owner = empty.owner
    self.subscriptBaseAddress = empty.firstElementAddress
    self.startIndex = empty.startIndex

    return isUniquelyReferencedOrPinnedNonObjC(&owner)
  }

  func getElement(i: Int, hoistedIsNativeNoTypeCheckBuffer: Bool) -> Element {
    _sanityCheck(i >= startIndex, "negative slice index is out of range")
    _sanityCheck(i < endIndex, "slice index out of range")
    return subscriptBaseAddress[i]
