The following statement can be found at this link.
The function __{ContractName}_init_unchained (unchained) found in every contract is the initializer function minus the calls to parent initializers, and can be used to avoid the double initialization problem, but doing this manually is not recommended.
It is not clear to me if I should be using systematically __{ContractName}_init_unchained (unchained) for all the openzeppelin upgradeable solidity modules I import into my Contract, or should I be using __{ContractName}_init instead when there is no risk of initialising the same contract twice.
Also, if it is not recommended to do this manually, is there another suggested way?
Thank you. J