private function fetchPropertiesFor($inputScreenId, IMetaModel $metaModel): array
    {
        $builder = $this->connection->createQueryBuilder();
        return array_map(function ($column) use ($inputScreenId, $metaModel) {
            if ('attribute' !== $column['dcatype']) {
                return $column;
            }
            if (!($attribute = $metaModel->getAttributeById($column['attr_id']))) {
                // @codingStandardsIgnoreStart
                @trigger_error(
                    'Unknown attribute "' . $column['attr_id'] . '" in input screen "' . $inputScreenId . '"',
                    E_USER_WARNING
                );
                // @codingStandardsIgnoreEnd
                return $column;
            }
            $column = array_merge(
                $column,
                $attribute->getFieldDefinition($column),
                ['col_name' => $attribute->getColName()]
            );

            return $column;
        }, $builder
            ->select('*')
            ->from('tl_metamodel_dcasetting')
            ->where('pid=:pid')
            ->andWhere('published=:published')
            ->setParameter('pid', $inputScreenId)
            ->setParameter('published', 1)
            ->orderBy('sorting')
            ->execute()
            ->fetchAll(\PDO::FETCH_ASSOC));
    }