public function findAll($re, $filter = null) {
        $result = array();
        $this->each(function($context) use ($re, $filter, &$result) {
            $context->findAll($re, $filter)->each(
                function($context) use (&$result) {
                    $result[] = $context;
                }
            );
        });

        return new self($result);
    }