code: def normalize_contract_type(
      contract_type_data: Dict[str, Any]
  ) -> Iterable[Tuple[str, Any]]:
      
      yield "abi", contract_type_data["abi"]
      if "evm" in contract_type_data:
          if "bytecode" in contract_type_data["evm"]:
              yield "deployment_bytecode", normalize_bytecode_object(
                  contract_type_data["evm"]["bytecode"]
              )
          if "deployedBytecode" in contract_type_data["evm"]:
              yield "runtime_bytecode", normalize_bytecode_object(
                  contract_type_data["evm"]["deployedBytecode"]
              )
      if any(key in contract_type_data for key in NATSPEC_FIELDS):
          natspec = deep_merge_dicts(
              contract_type_data.get("userdoc", {}), contract_type_data.get("devdoc", {})
          )
          yield "natspec", natspec
      # make sure metadata isn't an empty string in solc output
      if "metadata" in contract_type_data and contract_type_data["metadata"]:
          yield "compiler", normalize_compiler_object(
              json.loads(contract_type_data["metadata"])
          )
docs: Serialize contract_data found in compiler output to the defined fields.