 //
 //===----------------------------------------------------------------------===//
 
-/// This protocol is an implementation detail of `ExtensibleCollectionType`; do
-/// not use it directly.
-///
-/// Its requirements are inherited by `ExtensibleCollectionType` and thus must
-/// be satisfied by types conforming to that protocol.
-public protocol _ExtensibleCollectionType : CollectionType {
+/// A collection type that can be efficiently appended-to.
+public protocol ExtensibleCollectionType : CollectionType {
   /// Create an empty instance.
   init()
 

}

public func +<
    C : _ExtensibleCollectionType,
    S : SequenceType
    where S.Generator.Element == C.Generator.Element
>(lhs: S, rhs: C) -> C {

      S : SequenceType
      where S.Generator.Element == Generator.Element
  >(newElements: S)

  /*
  We could have these operators with default implementations, but the compiler
  crashes:

