The following code results in error "Call to an undefined method Nette\Forms\Controls\BaseControl::setItems()". This is because setRequired has annotation @return self. Changing the annotation to @return static does solve the problem. Ideally phpstan should notice return $this and infer the correct return type regardless of annotation.
$form->addSelect('currency')
->setRequired()
->setItems($currencyList);