def deep_copy(item_original):
item = copy.copy(item_original)<EOL>item._id = uuid.uuid4().hex<EOL>if hasattr(item, '<STR_LIT>') and len(item._children) > <NUM_LIT:0>:<EOL><INDENT>children_new = collections.OrderedDict()<EOL>for subitem_original in item._children.values():<EOL><INDENT>subitem = deep_copy(subitem_original)<EOL>subitem._parent = item<EOL>children_new[subitem.get_name()] = subitem<EOL><DEDENT>item._children = children_new<EOL><DEDENT>return item<EOL>
Return a recursive deep-copy of item where each copy has a new ID.