code: def state_definition_to_dict(state_definition: GeneralState) -> AccountState:
      
      if isinstance(state_definition, Mapping):
          state_dict = state_definition
      elif isinstance(state_definition, Iterable):
          state_dicts = [
              assoc_in(
                  {},
                  state_item[:-1],
                  state_item[-1]
              ) if not isinstance(state_item, Mapping) else state_item
              for state_item
              in state_definition
          ]
          if not is_cleanly_mergable(*state_dicts):
              raise ValidationError("Some state item is defined multiple times")
          state_dict = deep_merge(*state_dicts)
      else:
          assert TypeError("State definition must either be a mapping or a sequence")
  
      seen_keys = set(concat(d.keys() for d in state_dict.values()))
      bad_keys = seen_keys - set(["balance", "nonce", "storage", "code"])
      if bad_keys:
          raise ValidationError(
              "State definition contains the following invalid account fields: {}".format(
                  ", ".join(bad_keys)
              )
          )
  
      return state_dict
docs: Convert a state definition to the canonical dict form.
  
      State can either be defined in the canonical form, or as a list of sub states that are then
      merged to one. Sub states can either be given as dictionaries themselves, or as tuples where
      the last element is the value and all others the keys for this value in the nested state
      dictionary. Example:
  
      ```
          [
              ("0xaabb", "balance", 3),
              ("0xaabb", "storage", {
                  4: 5,
              }),
              "0xbbcc", {
                  "balance": 6,
                  "nonce": 7
              }
          ]
      ```