public static String getRandomName(int number) {
        int combinationIdx = number % (LEFT.length * RIGHT.length);
        int rightIdx = combinationIdx / LEFT.length;
        int leftIdx = combinationIdx % LEFT.length;
        String name = String.format(NAME_FORMAT, LEFT[leftIdx], RIGHT[rightIdx]);
        String prefix = System.getProperty(MOBY_NAMING_PREFIX);
        if (prefix != null) {
            name = prefix + "_" + name;
        }
        return name;
    }
@Test
    public void allValuesReturnedFair() {
        int totalCombinations = 98 * 240; // MobyNames.LEFT.length * MobyNames.RIGHT.length
        Map<String, AtomicInteger> namesCounts = new HashMap<>();
        for (int i = 0; i < totalCombinations * 2; i++) {
            String randomName = MobyNames.getRandomName(i);
            namesCounts.computeIfAbsent(randomName, key -> new AtomicInteger(0)).incrementAndGet();
        }
        assertEquals(totalCombinations, namesCounts.size());
        assertTrue(namesCounts.keySet().stream().noneMatch(StringUtil::isNullOrEmptyAfterTrim));
        for (Map.Entry<String, AtomicInteger> entry : namesCounts.entrySet()) {
            assertEquals(entry.getKey(), 2, entry.getValue().get());
        }
    }