async def METHOD_NAME(
    can_messenger: CanMessenger,
    can_messenger_queue: WaitableCallback,
    name: PipetteName,
    model: int,
    datecode: bytes,
) -> None:
    """It should write a serial number and read it back."""
    node_id = NodeId.pipette_left
    serial_bytes = serial_val_from_parts(name, model, datecode)
    s = SerialNumberPayload(serial=SerialField(serial_bytes))
    await can_messenger.send(node_id=node_id, message=SetSerialNumber(payload=s))
    await can_messenger.send(node_id=node_id, message=InstrumentInfoRequest())
    response, arbitration_id = await asyncio.wait_for(can_messenger_queue.read(), 1)
    assert arbitration_id.parts.originating_node_id == node_id
    assert isinstance(response, PipetteInfoResponse)
    assert response.payload.name.value == name.value
    assert response.payload.model.value == model
    assert response.payload.serial.value[: len(datecode)] == datecode