List of companies while merging

I’ve been trying to find out from where is the select input field for merging companies getting populated with company options. I’ve found out that it is working through ajax calls in CompanyListType.php through this function:

public function configureOptions(OptionsResolver $resolver): void
    {
        $resolver->setDefaults(
            [
                'label'               => 'mautic.lead.lead.companies',
                'entity_label_column' => 'companyname',
                'modal_route'         => 'mautic_company_action',
                'modal_header'        => 'mautic.company.new.company',
                'model'               => 'lead.company',
                'ajax_lookup_action'  => 'lead:getLookupChoiceList',
                'multiple'            => true,
                'main_entity'         => 'main_entity',
            ]
        );
    }

From here, how does the control go to AjaxLookupController.php? I believe this function from AjaxLookupControllerTrait.php is then responsible for getting the companies data:

public function getLookupChoiceListAction(Request $request): JsonResponse
    {
        $dataArray = [];
        $modelName = InputHelper::clean($request->query->get('searchKey'));
        $search    = InputHelper::clean($request->query->get(str_replace('.', '_', $modelName)));
        $limit     = (int) $request->query->get('limit', '0');
        $start     = (int) $request->query->get('start', '0');

        if (!$modelName) {
            throw new BadRequestException('The searchKey parameter is required.');
        }

        if (!$search) {
            return new JsonResponse($dataArray);
        }

        $model = $this->getModel($modelName);

        if (!$model instanceof AjaxLookupModelInterface) {
            throw new BadRequestException("The model {$modelName} must implement the AjaxLookupModelInterface.");
        }

        $results = $model->getLookupResults($modelName, $search, $limit, $start);

        foreach ($results as $group => $result) {
            $option = [];
            if (is_array($result)) {
                if (!isset($result['value'])) {
                    // Grouped options
                    $option = [
                        'group' => true,
                        'text'  => $group,
                        'items' => $result,
                    ];

                    foreach ($result as $value => $label) {
                        if (is_array($label) && isset($label['label'])) {
                            $option['items'][$value]['text'] = $label['label'];
                        }
                    }
                } else {
                    if (isset($result['label'])) {
                        $option['text'] = $result['label'];
                    }

                    $option['value'] = $result['value'];
                }
            } else {
                $option[$group] = $result;
            }

            $dataArray[] = $option;
        }

        return new JsonResponse($dataArray);
    }

I am having trouble understanding the flow of control here. How can I pass parameters from CompanyListType.php to this function?