   var i: [I]
 
   init<S: SequenceType where S.Generator.Element == I>(_ input: S)
-  {
-    self.init(Array(input))
-  }
-
-  init(_ input: Range<I>)
   {
     self.init(Array(input))
   }

      // return the new random Index.
      return i[step]
    }

    return nil
  }

  func generate() -> IndexShuffler
  {
    return self
  }
}


import Darwin

extension CollectionType
{
  /// Get a sequence/generator that will return a collection's elements in a random order.
  /// The input collection is not modified.
  ///
  /// - returns: A `PermutationGenerator` of `c`'s elements, shuffled.

  func shuffle() -> PermutationGenerator<Self, IndexShuffler<Self.Index>>
  {
    return PermutationGenerator(elements: self, indices: IndexShuffler(self.indices))
