   /// - Complexity: O(1)
   @warn_unused_result
   public func flatMap<
-    Intermediate: Collection
-    where Intermediate.Index : BidirectionalIndex
+    SegmentOfResult : Collection
+    where SegmentOfResult.Index : BidirectionalIndex
   >(
-    transform: (Elements.Iterator.Element)->Intermediate
+    transform: (Elements.Iterator.Element)->SegmentOfResult
   ) -> LazyCollection<
     FlattenBidirectionalCollection<
-      LazyMapCollection<Elements, Intermediate>
+      LazyMapCollection<Elements, SegmentOfResult>
   >> {
     return self.map(transform).flatten()
   }

  ///
  /// - Complexity: O(1)
  @warn_unused_result
  public func flatMap<Intermediate: Sequence>(
    transform: (Elements.Iterator.Element)->Intermediate
  ) -> LazySequence<
    FlattenSequence<LazyMapSequence<Elements, Intermediate>>> {
    return self.map(transform).flatten()
  }
}

  ///
  /// - Complexity: O(1)
  @warn_unused_result
  public func flatMap<SegmentOfResult : Collection>(
    transform: (Elements.Iterator.Element)->SegmentOfResult
  ) -> LazyCollection<
    FlattenCollection<
      LazyMapCollection<Elements, SegmentOfResult>>
  > {
    return self.map(transform).flatten()
  }
