     >(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 {

  public var contents: [[Element]] {
    return children.flatMap {
      (head: Element, child: Trie<Element>) -> [[Element]] in
      return child.contents.map { [head] + $0 } + (child.endHere ? [[head]] : [])
    }
  }
}

  private func completions
    <G : GeneratorType where G.Element == Element>
    (var start: G) -> [[Element]] {
      guard let head = start.next() else  { return contents }
      guard let child = children[head] else { return [] }
      return child
        .completions(start)
        .map { [head] + $0 }
  }
  
  public func completions<S : SequenceType where S.Generator.Element == Element>(start: S) -> [[Element]] {
