<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def normalize_contract_type( contract_type_data: Dict[str, Any] ) -> Iterable[Tuple[str, Any]]: """ Serialize contract_data found in compiler output to the defined fields. """

    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"])
        )