private function getUsedFieldtypes(ContentType $contentType, Content $content, array $has)
    {
        $fieldtypes = [
            'meta' => true,
        ];

        if ($content->getTemplatefields() instanceof TemplateFields) {
            $templateFields = $content->getTemplatefields()->getContenttype()->getFields() ?: [];
        } else {
            $templateFields = [];
        }

        foreach ([$contentType['fields'], $templateFields] as $fields) {
            foreach ($fields as $field) {
                $fieldtypes[$field['type']] = true;
                if ($field['type'] === 'repeater') {
                    foreach ($field['fields'] as $rfield) {
                        $fieldtypes[$rfield['type']] = true;
                    }
                }
                if ($field['type'] === 'block') {
                    foreach ($field['fields'] as $block) {
                        foreach ($block['fields'] as $rfield) {
                            $fieldtypes[$rfield['type']] = true;
                        }
                    }
                }
            }
        }

        if ($has['relations'] || $has['incoming_relations']) {
            $fieldtypes['relationship'] = true;
        }

        if ($has['taxonomy'] || (is_array($contentType['groups']) && in_array('taxonomy', $contentType['groups']))) {
            $fieldtypes['taxonomy'] = true;
        }

        if ($has['templatefields'] || (is_array($contentType['groups']) && in_array('template', $contentType['groups']))) {
            $fieldtypes['template'] = true;
        }

        return array_keys($fieldtypes);
    }