def METHOD_NAME(copy_data: PresentationCopy, _diagram, lookup):
    cls, data, diagram_ref, parent = copy_data
    diagram = lookup(diagram_ref)
    item = diagram.create(cls)
    yield item
    if parent:
        if p := lookup(parent):
            item.parent = p
    for name, ser in data.items():
        for value in deserialize(ser, lookup):
            item.load(name, value)
    diagram.update_now((item,))