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

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

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