 
   /// 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
   }
 

//
//===----------------------------------------------------------------------===//

/// Buffer type for ArraySlice<T>
public
struct _SliceBuffer<T> : _ArrayBufferType {
  public typealias Element = T
  typealias NativeStorage = _ContiguousArrayStorage<T>
  public typealias NativeBuffer = _ContiguousArrayBuffer<T>

  init(owner: AnyObject, subscriptBaseAddress: UnsafeMutablePointer<T>,
       indices: Range<Int>, hasNativeBuffer: Bool) {
    self.owner = owner
    self.subscriptBaseAddress = subscriptBaseAddress
    self.startIndex = indices.startIndex

  /// - Requires: This buffer is backed by a uniquely-referenced
  ///   `_ContiguousArrayBuffer` and
  ///   `insertCount <= numericCast(newValues.count)`.
  public mutating func replace<
    C : CollectionType where C.Generator.Element == Element
  >(
    subRange subRange: Range<Int>,
    with insertCount: Int,
    elementsOf newValues: C
