 //
 
 import Darwin
+
+extension LazyCollectionType where Index: Hashable, Index.Distance == Int {
+    /// Return a shuffled view of `self`.
+    @warn_unused_result
+    public func shuffle() -> LazyShuffleCollection<Self> {
+        return LazyShuffleCollection(self)
+    }
+}
 
 public struct LazyShuffleCollection<Collection: CollectionType where Collection.Index.Distance == Int, Collection.Index: Hashable> {
     private var collection: Collection

    }
}

extension LazyShuffleCollection: CollectionType {
    public var startIndex: Collection.Index {
        return collection.startIndex
    }

    }
}

extension MutableLazyShuffleCollection: MutableCollectionType, LazyCollectionType {
    public var startIndex: Collection.Index {
        return collection.startIndex
    }
