* Add panicking test
* Fix panic
* Add another panicking case
* Fix panic
* Add another panicking case
* Fix panics
* Add another panicking case
* Fix
* Add another case
* Move existing fix outside if clause
* Add some helpful comments
* Add DefaultAccountState extension
* Check DefaultAccountState in InitializeAccount
* Add rust client functionality
* Add tests
* Simplify ix variants
* Fixup freeze-auth signing state for multisig
* Add InitializeMint check to prevent freeze_authority.is_none() and default AccountState::Frozen
* Use separate freeze_authority in program_test
* Add docs for default-state instruction data
* Rebase on #2807
* Refactor transfer to use StateWithExtensionsMut
* Add basic transfer tests
* Add transfer fee calculation and use in transfer
* Add specific transfer fee tests
* Add self-transfer test + rename test
* Prep helper fn to reuse code
* Adjust error to match current _initialize_account handling
* Add new helper to initialize extension from ExtensionType
* Include required extensions in InitializeAccount processing
* Initialize native mint
* Add missing native-mint test case for get_account_data_size
* Remove superfluous mint unpack
* Limit scope of StateWithExtensionsMut method
* Update comments to be correct
* Check account length vis-a-vis required extensions in Initialize
* Noop confidential-transfer case, add comments, and make fn name more explicit
* gt -> ne
* token: Extension state packing
* Move to bytemuck
* Cleanup a bit
* Remove all unsafe, address feedback
* Address feedback
* Add test for multisig-length account
* Add tests for Account and multi-extension
* Remove last todo
* Add more tests
* token-2022: Add transfer fee accounts and instructions
* Address feedback
* More feedback
* Move to mixins
* Separate instructions for mixin initialization
* Feedback again again again!
* Getting there...
* More more feedback again again
* Add `WithdrawWithheldTokensFromAccounts` instruction
* Add instruction serde, fix all errors