public function find($type = null, array $options = [])
    {
        $type = $type ?: $this->getFinder();
        list($type, $opts) = $this->_extractFinder($type);
        $query = $this->getTarget()
            ->find($type, $options + $opts)
            ->where($this->targetConditions())
            ->addDefaultTypes($this->getTarget());

        if (!$this->junctionConditions()) {
            return $query;
        }

        $belongsTo = $this->junction()->getAssociation($this->getTarget()->getAlias());
        $conditions = $belongsTo->_joinCondition([
            'foreignKey' => $this->getTargetForeignKey()
        ]);
        $conditions += $this->junctionConditions();

        return $this->_appendJunctionJoin($query, $conditions);
    }