[X] Transaction
 - [ ] from_bytes()
 - [ ] to_bytes()
 - [ ] from_scheduled_transaction()
 - [ ] schedule()
 - [ ] get_transaction_hash()
 - [ ] get_transaction_hash_per_node()
 - [ ] regenerate_transaction_id
 - [ ] sign() (weirdly, signers is present, but doesn't do anything?)
 - [ ] sign_with()
 - [ ] sign_with_operator()
 - [ ] add_signature()
 - [ ] get_signatures()
 - [ ] freeze()
 - [ ] freeze_with()
 - [ ] min/max backoff
 - [ ] max attempts
 - [ ] request/response listener
[X] AccountAllowanceApproveTransaction
[X] AccountAllowanceDeleteTransaction
[X] AccountBalanceQuery
[X] AccountCreateTransaction
 - [ ] Alias key?
[X] AccountDeleteTransaction
[X] AccountId
 - [X] checksum support
 - [ ] When serialized, aliasKey should NOT be the raw bytes of the key, 
       instead should be bytes of the serialized key _protobuf_ (yes, it's confusing).
 - [ ] aliasEvmAddress
 - [X] to_bytes()
 - [X] from_bytes()
[ ] AccountInfoFlow
 - [ ] verifySignature()
 - [ ] verifyTransactionSignature()
[X] AccountInfoQuery
 - [X] ledger_id
[X] AccountRecordsQuery
[X] AccountStakersQuery
[X] AccountUpdateTransaction
[X] AddressBookQuery
[X] Client (present, but almost nothing of the public interface that exists in other SDKs is present)
 - [ ] The whole dang public interface: https://github.com/hashgraph/hedera-sdk-reference/blob/main/reference/core/Client.md
 - [ ] autoValidateChecksums: https://github.com/hashgraph/hedera-sdk-java/blob/main/examples/src/main/java/ValidateChecksumExample.java
 - [ ] min/max backoff
 - [ ] max attempts
[X] ContractByteCodeQuery
[X] ContractCallQuery
[ ] ContractCreateFlow
[X] ContractCreateTransaction
[X] ContractDeleteTransaction
[X] ContractExecuteTransaction
[ ] ContractFunctionParameters
[X] ContractFunctionResult
[ ] ContractFunctionSelector
[X] ContractId
 - [X] checksum support
 - [X] to_bytes()
 - [X] from_bytes()
[X] ContractInfo
 - [X] ledger_id
 - [X] staking_info
[X] ContractUpdateTransaction
[X] EthereumTransaction
[ ] EthereumFlow
[X] FileAppendTransaction
 - [ ] Automatic chunking for larger contents 
[X] FileContentsQuery
[X] FileCreateTransaction
 - [X] expiration_time is named inconsistently
[X] FileDeleteTransaction
[X] FileId
 - [X] checksum support
 - [X] to_bytes()
 - [X] from_bytes()
[X] FileInfoQuery
 - [X] ledger_id
 - [ ] keys
[X] FileUpdateTransaction
 - [X] expiration_time is named inconsistently
[X] FreezeTransaction
[X] Hbar
[X] Key
 - [ ] keylist
 - [ ] threshold key
[ ] KeyList
[X] PrivateKey
 - [X] from_bytes_der() (from_bytes_pkcs8_der() exists, but is not public)
 - [X] from_string() (implements FromStr, but doesn't have the specific variants listed below)
 - [X] from_string_der()
 - [X] from_string_ed25519()
 - [X] from_string_ecdsa()
 - [X] from_mnemonic()
 - [X] from_pem()
 - [X] derive() (ed25519 only so far. Ecdsa doesn't exist in Java though)
 - [X] legacy_derive() (ed25519 only so far. Ecdsa doesn't exist in Java though)
 - [X] sign(message)
 - [ ] sign_transaction()
 - [X] to_bytes()
 - [X] to_bytes_der()
 - [X] to_bytes_raw()
 - [X] to_string()
 - [X] to_string_der()
 - [X] to_string_raw()
 - [X] to_account_id()
 - [X] is_ed35519()
 - [X] is_ecdsa()
[X] PublicKey
 - [X] from_bytes_der() (from_bytes_pkcs8_der() exists, but is not public)
 - [X] from_string() (implements FromStr, but doesn't have the specific variants listed below)
 - [X] from_string_der()
 - [X] from_string_ed25519()
 - [X] from_string_ecdsa()
 - [X] verify(message)
 - [ ] verify_transaction()
 - [X] to_string() (implements Display, but doesn't have the specific variants listed below)
 - [X] to_string_der()
 - [X] to_string_raw()
 - [X] to_account_id()
[X] LedgerId
 - [X] from_string()
 - [X] from_bytes()
 - [X] to_string() (implements Display, but does not sugar ledger IDs with known names)
[X] Mnemonic
[X] NetworkVersionInfoQuery
[X] NftId
 - [X] checksum support
 - [X] to_bytes()
 - [X] from_bytes()
[ ] Pem
[ ] PrngTransaction
[X] Query
  - [ ] min/max backoff
  - [ ] max attempts
  - [ ] request/response listener
[X] ScheduleCreateTransaction
[X] ScheduleDeleteTransaction
[X] ScheduleId
 - [X] checksum support
 - [X] to_bytes()
 - [X] from_bytes()
[X] ScheduleInfoQuery
 - [X] ledger_id
 - [ ] scheduled_transaction
[X] ScheduleSignTransaction
[X] SystemDeleteTransaction
[X] SystemUndeleteTransaction 
[X] TokenAssociateTransaction
[X] TokenBurnTransaction
[X] TokenCreateTransaction
 - [X] expiration_time is named inconsistently
[X] TokenDeleteTransaction
[X] TokenDissociateTransaction
[X] TokenFeeScheduleUpdateTransaction
[X] TokenFreezeTransaction
[X] TokenGrantKycTransaction
[X] TokenId
 - [X] checksum support
 - [X] to_bytes()
 - [X] from_bytes()
[X] TokenInfoQuery
 - [X] ledger_id
[X] TokenPauseTransaction
[X] TokenRevokeKycTransaction
[X] TokenUnfreezeTransaction
[X] TokenUnpauseTransaction
[X] TokenUpdateTransaction
 - [X] expiration_time is named inconsistently
[X] TokenWipeTransaction
[X] TopicCreateTransaction
[X] TopicDeleteTransaction
[X] TopicId
 - [X] checksum support
 - [X] to_bytes()
 - [X] from_bytes()
[X] TopicInfoQuery
 - [X] ledger_id
[X] TopicMessageQuery
[X] TopicMessageSubmitTransaction
 - [ ] Automatic chunking for larger contents 
[X] TopicUpdateTransaction
 - [X] expiration_time is named inconsistently
[X] TransactionId
 - [X] to_bytes()
 - [X] from_bytes()
[X] TransactionReceiptQuery
 - [ ] exchange_rate
[X] TransactionRecordQuery
 - [ ] bunch of missing fields (refer to TODOs)
[X] TransferTransaction
 - [ ] transfers must be sorted on serialization
