Actually why not work on TraversableOnce?
```scala
def filter(to: TraversableOnce[T])(pred: T => Boolean): (ListBuffer[T], TraversableOnce[T]) = {
  val failed = ListBuffer[T]()
  val passed = new TraversableOnce[T] {
    def foreach(fn: T => Unit): Unit = {
      to.foreach { t => if(pred(t)) fn(t) else failed += t }
    }
  }
  (failed, passed)
}
```
Then we don't need to do the toIterator conversion when we use this.