public function cascadeDelete(Association $association, EntityInterface $entity, array $options = [])
    {
        if (!$association->getDependent()) {
            return true;
        }
        $table = $association->getTarget();
        $foreignKey = array_map([$association, 'aliasField'], (array)$association->getForeignKey());
        $bindingKey = (array)$association->getBindingKey();
        $conditions = array_combine($foreignKey, $entity->extract($bindingKey));

        if ($association->getCascadeCallbacks()) {
            foreach ($association->find()->where($conditions)->all()->toList() as $related) {
                $table->delete($related, $options);
            }

            return true;
        }
        $conditions = array_merge($conditions, $association->getConditions());

        return (bool)$table->deleteAll($conditions);
    }