code: public <T> T get(T defaultValue, Class<T> beanType, Consumer<T> changeListener, long initialValueTimeout,
                       TimeUnit initialValueTimeoutUnit)
              throws TimeoutException, InterruptedException {
          return get(defaultValue, beanType, changeListener, CentralDogmaBeanConfig.EMPTY,
                     initialValueTimeout, initialValueTimeoutUnit);
      }
docs: Returns a newly-created bean instance with the settings specified by {@link CentralDogmaBean} annotation.
  
  @param defaultValue a Java bean annotated with {@link CentralDogmaBean}. The default value is used before
  initialization.
  @param beanType the type of {@code bean}
  @param changeListener the {@link Consumer} of {@code beanType}, invoked when {@code bean} is updated.
  Will consume the new value of the bean.
  @param initialValueTimeout when a value larger than zero given to this argument, this method
  tries to wait for the initial value to be fetched until the timeout
  @param initialValueTimeoutUnit the {@link TimeUnit} of {@code initialValueTimeout}
  
  @return a new Java bean whose getters return the latest known values mirrored from Central Dogma
  
  @throws TimeoutException when {@code initialValueTimeoutMillis} is positive and
  it failed to obtain the initial value within configured timeout
  @throws InterruptedException when {@code initialValueTimeoutMillis} is positive and
  it got interrupted while waiting for the initial value