       count: newCount,
       minimumCapacity: _growArrayCapacity(lhs.capacity))
 
-    if lhs._base.hasStorage {
-      newLHS.baseAddress.moveInitializeFrom(lhs.baseAddress, count: oldCount)
-      lhs._base.value.count = 0
-    }
+    newLHS.baseAddress.moveInitializeFrom(lhs.baseAddress, count: oldCount)
+    lhs.count = 0
     swap(&lhs, &newLHS)
-    (lhs._base.baseAddress + oldCount).initializeFrom(rhs)
+    (lhs.baseAddress + oldCount).initializeFrom(rhs)
   }
 }
 

    _sanityCheck(
      !_isBridgedVerbatimToObjectiveC(T.self),
      "Verbatim bridging should be handled separately")
    let nativeBuffer = Buffer(self)
    let count = nativeBuffer.count
    let result = _HeapBuffer<Int, AnyObject>(
      _HeapBufferStorage<Int, AnyObject>.self, count, count)
    let resultPtr = result.baseAddress
    for i in 0..<count {
      (resultPtr + i).initialize(
        _bridgeToObjectiveCUnconditional(nativeBuffer[i]))
    }
    return result
  }

  override var staticElementType: Any.Type {
    return T.self
  }

  internal // private
  typealias Manager = ManagedBufferPointer<_ArrayBody, T>

  internal // private
  var __manager : Manager {
    return Manager(unsafeBufferObject: self)
  }
}

public struct _ContiguousArrayBuffer<T> : _ArrayBufferType {
