public function findSearch(Query $query, array $options) : Query
    {
        $search = new Search($query, $this->getTable());

        $search->setConjunction(Hash::get($options, 'conjunction', Search::DEFAULT_CONJUNCTION));

        foreach (Hash::get($options, 'data', []) as $criteria) {
            if (! is_array($criteria)) {
                throw new \InvalidArgumentException(sprintf(
                    'Search criteria must be an array, %s provided instead',
                    gettype($criteria)
                ));
            }

            $search->addCriteria(new Criteria($criteria));
        }

        return $search->execute();
    }