How to Write an ERC-4626 Token Contract for Yield-Bearing Vaults