public String toHumanReadableString() {
        if (humanReadableStr == null) {
            humanReadableStr = formatToHumanReadableString();
        }

        return humanReadableStr;
    }
@Test
    void testToHumanReadableString() {
        assertThat(new MemorySize(0L).toHumanReadableString()).isEqualTo("0 bytes");
        assertThat(new MemorySize(1L).toHumanReadableString()).isEqualTo("1 bytes");
        assertThat(new MemorySize(1024L).toHumanReadableString()).isEqualTo("1024 bytes");
        assertThat(new MemorySize(1025L).toHumanReadableString()).isEqualTo("1.001kb (1025 bytes)");
        assertThat(new MemorySize(1536L).toHumanReadableString()).isEqualTo("1.500kb (1536 bytes)");
        assertThat(new MemorySize(1_000_000L).toHumanReadableString())
                .isEqualTo("976.563kb (1000000 bytes)");
        assertThat(new MemorySize(1_000_000_000L).toHumanReadableString())
                .isEqualTo("953.674mb (1000000000 bytes)");
        assertThat(new MemorySize(1_000_000_000_000L).toHumanReadableString())
                .isEqualTo("931.323gb (1000000000000 bytes)");
        assertThat(new MemorySize(1_000_000_000_000_000L).toHumanReadableString())
                .isEqualTo("909.495tb (1000000000000000 bytes)");
    }