The previously immutable AccountCredentials type has been transformed into a mutable type with six Option fields. Those fields have causal relationships between each other; when you have one of them, you must also have at least two more, but as they're encoded as a pile of unrelated optional fields, the type system can't tell you this and can't enforce that fact. This leads to a lot of unpleasant checks throughout the code, and it's unclear without a detailed study of the execution path of the program when some fields can be set and not others. I've managed to work out the relationships, so this type needs to be completely replaced with an immutable credentials type as part of the accounts/profiles update.
The previously immutable
AccountCredentials
type has been transformed into a mutable type with sixOption
fields. Those fields have causal relationships between each other; when you have one of them, you must also have at least two more, but as they're encoded as a pile of unrelated optional fields, the type system can't tell you this and can't enforce that fact. This leads to a lot of unpleasant checks throughout the code, and it's unclear without a detailed study of the execution path of the program when some fields can be set and not others. I've managed to work out the relationships, so this type needs to be completely replaced with an immutable credentials type as part of the accounts/profiles update.