code: public function createDelegatorWithName(
          ServiceLocatorInterface $validators,
          $name,
          $requestedName,
          $callback
      ) {
          $identityValidator = $callback();
  
          if (!$identityValidator instanceof ValidatorChain
              || $requestedName !== 'CmsAuthenticationIdentity'
          ) {
              return $identityValidator;
          }
  
          $services = $validators->getServiceLocator();
  
          /* @var $options InputFilterOptionsInterface */
          $options = $services->get(ModuleOptions::class);
  
          $identityFields = $options->getIdentityFields();
          if ($identityFields == ['email']) {
              $identityValidator->prependByName('EmailAddress', [], true);
          } elseif ($identityFields == ['username']) {
              $identityValidator->prependByName('Alnum', [
                  'messages' => [
                      Alnum::NOT_ALNUM => 'Incorrect identity. ' .
                      'Identity must contain alphanumeric characters without spaces',
                  ],
                  'allowWhiteSpace' => false,
              ], true);
          }
  
          /* @var $userMapper \CmsUser\Persistence\UserMapperInterface */
          $userMapper = $services->get('MapperManager')->get($options->getUserEntityClass());
  
          $identityValidator->attachByName('Callback', [
              'messages' => [
                  Callback::INVALID_VALUE => 'A record with the supplied identity could not be found',
              ],
              'callback' => function($value) use ($userMapper) {
                  return (bool) $userMapper->findByIdentity($value);
              },
          ], true);
  
          return $identityValidator;
      }
docs: {@inheritDoc}
  
  @return ValidatorInterface