     >(sequence: S) -> Bool {
       return Trie(sequence).isSupersetOf(self)
   }
-
+  
   public mutating func unionInPlace(with: Trie<Element>) {
     endHere = endHere || with.endHere
     for (head, child) in with.children {

  private func contains
    <G : GeneratorType where G.Element == Element>
    (var gen: G) -> Bool {
      return gen.next().map{self.children[$0]?.contains(gen) ?? false} ?? endHere
  }
  public func contains
    <S : SequenceType where S.Generator.Element == Element>


extension Trie {
  public func flatMap<S : SequenceType>(@noescape transform: [Element] -> S?) -> Trie<S.Generator.Element> {
    return Trie<S.Generator.Element>(lazy(contents).flatMap(transform))
  }
  public func flatMap<T>(@noescape transform: [Element] -> Trie<T>) -> Trie<T> {
    var ret = Trie<T>()
