Default constructor of RetryingPooledBookkeeperClient exists because LoocalBookkeerClient extends RetryingPooledBookkeeperClient which is done because we use RetryingPooledBookkeeperClient object everywhere in the code hence to fit in LoocalBookkeerClient we need it to be extending RetryingPooledBookkeeperClient.
Instead, we should be reference RetryingPooledBookkeeperClient objects via BookKeeperService.Iface to keep implementations open.
Default constructor of RetryingPooledBookkeeperClient exists because LoocalBookkeerClient extends RetryingPooledBookkeeperClient which is done because we use RetryingPooledBookkeeperClient object everywhere in the code hence to fit in LoocalBookkeerClient we need it to be extending RetryingPooledBookkeeperClient.
Instead, we should be reference RetryingPooledBookkeeperClient objects via BookKeeperService.Iface to keep implementations open.