Write a program that implements the initialization-on-demand holder design pattern in the classical way (before JDK 16), and another program that implements this design pattern based on the fact that from JDK 16+ Java inner classes can have static members and static initializers.