class UserDeviceServiceImpl implements UserDeviceService {

    @Transactional
    @Nonnull
    @Override
    public UserDevice createUserDevice(@Nonnull final Long userId, @Nonnull final UserDeviceDto userDeviceDto) {
        assertUserId(userId);
        assertUserDeviceDto(userDeviceDto);
        LOGGER.debug("Creating user device for user with id - {}, user device DTO - {}", userId, userDeviceDto);
        final User user = userService.getUserById(userId);
        assertNoUserDeviceExistsForUuId(user, userDeviceDto.getUuId());
        // Create user device
        UserDevice userDevice = new UserDevice();
        userDevice.setUser(user);
        userDeviceDto.updateDomainEntityProperties(userDevice);
        // Persist user device
        userDevice = userDeviceRepository.save(userDevice);
        LOGGER.debug("Successfully created user device with id - {}, user device - {}", userDevice.getId(), userDevice);
        return userDevice;
    }

    public  UserDeviceServiceImpl();

}