public function filter(\Closure $predicate) {
        $filter = array();
        $filter[0] = function(FixedFDirectory $obj) use ($predicate, &$filter) {
            return $obj
                ->filter($predicate)
                ->map(function(FSObject $obj) use ($predicate, &$filter) {
                    if ($obj->isFile()) {
                        return $obj;
                    }
                    return $filter[0]($obj);
                });
        };
        return new Recursor($filter[0]($this->directory));
    }