code: def copy(self):
          
          # New dummy item with it's own running properties
          copied_item = self.__class__({})
          # Now, copy the properties
          for prop in self.__class__.properties:
              if prop in ['uuid']:
                  continue
              val = getattr(self, prop, None)
              if val is not None:
                  setattr(copied_item, prop, val)
  
          # Also copy some running properties
          # The custom variables
          if hasattr(self, "customs"):
              copied_item.customs = copy(self.customs)
          # And tags/templates
          if hasattr(self, "tags"):
              copied_item.tags = copy(self.tags)
          if hasattr(self, "templates"):
              copied_item.templates = copy(self.templates)
  
          return copied_item
docs: Get a copy of this item but with a new id
  
          :return: copy of this object with a new id
          :rtype: object