     }
 }
 
-public extension CollectionType {
-    
-    /// Returns sub-sequence of `self`.
-    var slice: Self.SubSequence {
-        return self as? Self.SubSequence ?? self[self.indices]
-    }
-}
-
 public extension GeneratorType {
     
     /// Returns the first element of `self`, or `nil` if `self` is empty.
-    var first: Self.Element? {
+    var first: Element? {
         var generator = self
         return generator.next()
     }

    ///
    /// The sorting algorithm is not stable (can change the relative order of
    /// elements that compare equal).
    mutating func sortInPlace<R : Comparable>(@noescape by: (Self.Generator.Element) -> R) {
        self.sortInPlace { by($0) < by($1) }
    }
}

    
    @warn_unused_result
    public func nodes(from fromNode: Node) -> AnyForwardCollection<(Node, Link)> {
        return table[fromNode]?.any ?? EmptyCollection().any
    }
    
    @warn_unused_result
    public func nodes(to toNode: Node) -> AnyForwardCollection<(Node, Link)> {
        return table.lazy.flatMap { from, to in to[toNode].map { (from, $0) } }.any
    }
}

