Sometimes you may want to have an unlimited sequence of methods, which cannot be restricted/controlled by the interface. In this case on a "compilation" stage, you can restrict those methods to follow the standards you expect.
A real example from Drupal/Symfony world: https://cgit.drupalcode.org/form_alter_service/tree/src/FormAlterCompilerPass.php
Besides of fully-operable examples, you can check a quick use case:
(new MethodValidator(object<ReflectionMethod>, string<FQCN>))
->addArgument(
(new ArgumentSpecification('form'))
->setType('array')
->setOptional(false)
->setPassedByReference(true)
)
->addArgument(
(new ArgumentSpecification('formState'))
->setType(Iterator::class)
->setOptional(false)
->setPassedByReference(false)
);