function partition(callable $closure) {
        $collection1 = new self();
        $collection2 = new self();
        
        foreach($this->data as $key => $val) {
            if($closure($val, $key)) {
                $collection1->set($key, $val);
            } else {
                $collection2->set($key, $val);
            }
        }
        
        return array($collection1, $collection2);
    }