protected function _iterateClause(Query $query, $name = '', $config = [])
    {
        $clause = $query->clause($name);
        if (!$clause || !$clause->count()) {
            return false;
        }

        $alias = $config['hasOneAlias'];
        $fields = $this->_translationFields();
        $mainTableAlias = $config['mainTableAlias'];
        $mainTableFields = $this->_mainFields();
        $joinRequired = false;

        $clause->iterateParts(function ($c, &$field) use ($fields, $alias, $mainTableAlias, $mainTableFields, &$joinRequired) {
            if (!is_string($field) || strpos($field, '.')) {
                return $c;
            }

            if (in_array($field, $fields)) {
                $joinRequired = true;
                $field = "$alias.$field";
            } elseif (in_array($field, $mainTableFields)) {
                $field = "$mainTableAlias.$field";
            }

            return $c;
        });

        return $joinRequired;
    }